Я только начинаю с SML и пытаюсь изменить какой-то код, чтобы понять, что он делает (я не могу найти достойный отладчик SML / NJ, но это отдельный вопрос).
fun type_check e theta env non_gens =
case e of
constant_int _ => (integer,theta)
|
constant_bool _ => (boolean,theta)
| ...
Предположим, что это допустимый код, так как constant_int является частью уже объявленного типа данных и т. Д. Как добавить оператор печати, чтобы сказать "Возвращение" целого числа "в регистр? Я попробовал:
...
constant_int _ => (print "returning integer") (integer,theta)
...
Но я получаю:
stdIn:167.22-167.65 Error: operator is not a function [tycon mismatch]
operator: unit
in expression:
(print "returning integer") (integer,theta)
Мне кажется, я просто не понимаю, как выполнить последовательность операторов, только последнее из которых должно рассматриваться как возвращаемое значение. Любой совет?
Кроме того, как мне напечатать мое собственное значение типа данных? SML не понравилось, когда я попытался передать значение типа данных в print (), поэтому мне, вероятно, нужно создать новую функцию печати для каждого типа данных, это правильно?