WS14 ADT

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

WS14 ADT
Hallo alle …

hat jemand schon die Aufgabe 6 in der WS14 gemacht , und da bemerkt das ein Fehler gibt ? …

bei Teilaufgabe b) muss man concat Axiome schreiben … was in ForumLösungen steht , nach meine Meinung falsch ist …

aber was die richtige Antwort , bin ich mir nicht sicher , ob ich die gefunden habe …

hier meine Vorschlag …

[color=crimson][color=orange]concat(cons(X,F),cons(Y,L))=cons(X,cons(tail(F),cons(Y,L))
[/color][/color]
wäre das nicht ein bisschen besser , als was in Forum steht ? …

wenn jemand mir erklären kann was richtig und was nicht …

Danke im Voraus …


und wird glaube das gleiche bei c) einfacher funktionieren mit tail

so auch für c) …

filter(odd,cons(X,L))=cons(X,tail(L)) if (apply(odd,X))==true)

filter (odd,cons(X,nil))=cons(X,nil) if (apply(odd,X))==true)
nil sonst


hmm also glaube deine loesung funktioniert nicht, da
ja Tail, ne FunList als ergebnis liefert.

cons, erwartet jedoch ein T als erstes argument.

con(T, Funlist)
Tail : FunList → FunList


Du meinst WS13.

Ja, das ist defintiv Schwachsinn, beschreibt ja nur den Fall für zwei konkrete Listen.

Deine Typen passen hier nicht. tail liefert als Ergebnis etwas vom Typ FunList. Du benutzt es aber als ersten Parameter von cons, der vom Typ T sein sollte.

Für die Lösung, überleg dir mal, wie eine Liste aussehen kann, d.h. durch welche Konstruktoren sie erzeugt werden kann. Dann überlege dir, wie sich concat verhalten muss, wenn ihre beiden Parameter durch diese unterschiedlichen Konstruktoren erzeugt werden.

Noch ein Hinweis: Das Zauberwort heißt „rekursive Definition“.


Entschuldigung , in meine Lösung steht doch kein tail … sondern head

aber du hast Recht … muss so sein vielleicht ? …

[color=deepskyblue]concat(cons(X,F),cons(Y,L))=cons(X,concat(tail(F),cons(Y,L))
[/color]



ja ich habe das ja doch geändert … concat bekommt zwei FunList …

das musste eigentlich funktionieren !!! …

wenn nicht , dann brauche ich wirklich Hilfe in diese Aufgabe Typ …


Ja, sieht (fast) gut aus. Momentan verlierst du bei jedem Aufruf von concat ein Element der erste Liste, da du X übernimmst, aber dann mit tail(F) weitermachst, was ja das erste Element von F verwirft und die Restliste zurückgibt.

Außerdem kann eine Liste natürlich auch durch nil erzeugt werden, das muss in de Axiomen ggf. berücksichtigt werden.


upss sry zu schnell gelesen…ja schaut auf jeden fall gut aus