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.
Aufgabe 9.3
Hi,
darf man fragen, wie viele Axiome ihr auflistet?
Wenn ich das richtig verstanden habe ist die Anzahl ja grundsätzlich unbeschränkt, da man die (ohne, dass das sinnvoll wäre - ich möchte nur mein grunsätzliches Verständnis hinterfragen) unbegrenzt verschachteln kann, z.B.:
second(setSecond(setSecond(setSecond(create(x, y)), y), y), y) = y
Vier erscheinen mir auf jeden Fall sinnvoll, aber bei fünf Punkten ist das vlt. etwas wenig?
Das wuerde mich auch interessieren. Ich habe mich an der Punktezahl orientiert und nach fuenf aufgehoert. Aber wie oben geschrieben gibt es da ja verschiedenste Verschachtelungsmoeglichkeiten…
Wie in der Mathematik: So wenig Axiome wie moeglich, aber so viele wie noetig. Alle Axiome zussamen muessen das Verhalten des ADTs vollstaendig (und widerspruchsfrei) beschreiben.
Die Axiome muessen so gewaehlt werden, dass sich jede beliebige Verschachtelung von Operationen in die Normalform (Primaerkonstruktoren, externe Datentypen) umwandeln laesst.
Auch vier bei mir
Ich denke, die Aufgabe sei evtl. etwas schwierig zu verstehen. Die Rückgabentypen der Setter sind in dieser Implementierung vom Datentyp Pair, in der Praxis haben die Setter allerdings eher den Rückgabetyp void. Stellt man sich vor, dass die Setter vom Rückgabetyp void sind, wäre so ein Massensetzen wie setSecond(setSecond(a, b), c) in den Methoden auch nicht so einfach möglich. Und dann bleiben auch bei mir 4 Axiome übrig.
Schau dir mal Haskell an.