Я только начинаю с SML, и я пытаюсь изменить код, чтобы понять, что он делает (я не могу найти достойный отладчик SML/NJ, но это отдельный вопрос).Как вы печатаете внутри оператора case в SML?
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(), поэтому мне, вероятно, придется создать новую функцию печати для каждого типа данных, верно?
Разве вы не имеете в виду более высокую точность? – Shuzheng
@nlykkei: Нет, я имею в виду более низкий приоритет. Выражение case сначала сгруппировано, потому что оно имеет более высокий приоритет, оставляя точку с запятой, которая имеет более низкий приоритет, является самой внешней структурой. – newacct