Я пишу тестовый модуль для базового интерпретатора c -didacti c в OCaml, поэтому у меня есть тесты, которые возвращают правильное выразительное значение (evT) и тесты, которые просто терпят неудачу, и "выбрасывают" failwith ("что-то") операторы.
Если я скомпилирую и запусту файл, очевидно, что при первом сбое программа завершится. Поэтому я использую блок try / with, чтобы предотвратить это и продолжить процесс тестирования. Я просто хочу напечатать сообщение об ошибке без возврата какого-либо значения, НО оно продолжает говорить, что ожидает выразительное значение вместо единицы.
Вот фрагмент из моего кода:
try
eval (Dict([("",Eint(30));("mele",Eint(40))])) myEnv
with
Failure(msg) -> Printf.printf "%s" msg
;;
И это вывод:
404 | Failure(msg) -> Printf.printf "%s" msg
^^^^^^^^^^^^^^^^^^^^^^
Error: This expression has type unit but an expression was expected of type
evT