OCaml: применяется к слишком многим аргументам - PullRequest
0 голосов
/ 27 сентября 2011

Почему код

if some_bool_var then
begin
    output_string some_file "some string";   (* <--- error here *)
end

генерирует ошибку «применено к слишком многим аргументам».Но если я поменяю его на

if some_bool_var then output_string some_file "some string";

, то он прекрасно скомпилируется.

Почему это так?Спасибо.

1 Ответ

2 голосов
/ 27 сентября 2011

Я довольно скептически отношусь к тому, что то, что вы представили, не компилируется. Я скопировал его на верхний уровень и уверен, что вообще не получаю сообщение об ошибке.

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

Кроме того, точка с запятой, которая завершает ваш output_string вызов между begin и end, не нужна, так как этот блок не продолжается с большим количеством команд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...