funktionale Programmierung

felix92

Mitglied
Huhu und zwar stehe ich gerade vor 3 Aufgaben zur Prüfungsvorbereitung wo ich nicht so recht weiß wie ich diese lösen soll (im Anhang).
Wie das Kompositum-Muster umgesetzt wird weiß ich. Bei Aufgabe 2 müsste das 2. interface Visitor<A,R> heißen vermute ich. A für den Typ aus Tree und R für den Resultattyp quasi R Leaf <A> als Deklaration .
Kann mir da jmd weiterhelfen vlt. auch eine Lösung mit Erklärung ?
Danke im Vorraus
MfG Felix
 

Anhänge

  • 20190715_175246.jpg
    20190715_175246.jpg
    1,3 MB · Aufrufe: 140

httpdigest

Top Contributor
Das Thema hat genau mal Null mit funktionaler Programmierung zu tun. Es gibt nur immer Professoren, die gerne die Haskell Syntax für alles verwenden, unter anderem eben, um algebraische Datentypen zu beschreiben.
Schlage doch mal ganz konkret deine vermuteten Antworten für die drei Aufgaben vor. Es soll ja offensichtlich ein Binärbaum als Java Klassen realisiert werden. Welche Klassen brauchst du dann dafür genau?
 
X

Xyz1

Gast
Ist das in der Beschreibung nich die (erweiterte/angereicherte) Backus-Naur-Form oder ein Abwandlung davon?
 

httpdigest

Top Contributor
Denk nochmal drüber nach. Bei der Klassendeklaration für Leaf und Branch fehlt so einiges. Die Klasse `Branch` sieht garantiert strukturell nicht exakt identisch wie `Leaf` aus.
 

httpdigest

Top Contributor
Warum hast du denn jetzt das Attribut aus der Klasse wieder rausgenommen? Jetzt steht doch überhaupt nichts mehr im Leaf drin. Bitte erst nachdenken, bevor du Vorschläge machst.
 

httpdigest

Top Contributor
Beschreibe vielleicht erstmal, was für dich genau "data Tree a = Leaf a | Branch (Tree a) a (Tree a)" genau bedeutet, also wie du das genau interpretierst. Basierend darauf kann man diese Bedeutung dann eins zu eins in Java Klassen implementieren.
 

felix92

Mitglied
Naja Leaf a ist das einzelne Blatt dabei ist a der Wert und Branch ist die Verzweigung mit einem linken Blatt a als Verzweigungswert und nochmal Tree a als rechtes Blatt dabei kann Tree a allerdings auch wieder ein Branch sein also eine weitere Verzweigung so grob ich hoffe das ist verständlich wie ich das meine
/ \
1 / \
7 12
zum Beispiel
 

Neue Themen


Oben