Ich fange gerade mit SML an und versuche, etwas Code zu ändern, damit ich verstehe, was er tut (ich kann keinen anständigen SML/NJ-Debugger finden, aber das ist eine andere Frage).
fun type_check e theta env non_gens =
case e of
constant_int _ => (integer, theta)
| constant_bool _ => (boolean, theta)
| ...
Gehen Sie davon aus, dass dies gültiger Code ist, der constant_int
Teil eines bereits deklarierten Datentyps ist, usw. Wie füge ich eine Druckanweisung hinzu, die besagt, dass 'Returning "integer"' in den Fall eingefügt wird? Ich habe es versucht:
...
constant_int _ => (print "returning integer") (integer, theta)
...
Aber ich verstehe:
stdIn:167.22-167.65 Error: operator is not a function \[tycon mismatch\]
operator: unit
in expression:
(print "returning integer") (integer,theta)
Ich glaube, ich verstehe einfach nicht, wie man eine Folge von Anweisungen ausführt, von denen nur die letzte als Rückgabewert behandelt werden soll. Irgendein Rat?
Außerdem, wie würde ich meinen eigenen Datentypwert drucken? SML mochte es nicht, wenn ich versuchte, einen Datentypwert in print()
Ich muss also wahrscheinlich eine neue Druckfunktion für jeden Datentyp erstellen, ist das richtig?