Я довольно скептически отношусь к тому, что то, что вы представили, не компилируется. Я скопировал его на верхний уровень и уверен, что вообще не получаю сообщение об ошибке.
Скорее всего, проблема не в том, что вы ввели, а в том, что написано после. Я предполагаю, что у вас есть больше строк кода для этой конкретной функции, поэтому у end
должна быть точка с запятой, обозначающая конец этой команды. Думайте о begin ... end
как об альтернативе ( ... )
, а ...;
как об альтернативе let () = ... in
. Таким образом, использование begin ... end
не заменяет точку с запятой.
Кроме того, точка с запятой, которая завершает ваш output_string
вызов между begin
и end
, не нужна, так как этот блок не продолжается с большим количеством команд.