Я не уверен, что я понимаю вопрос или ответ zurgl, так что вот выстрел в темноте. Вы забыли «;;» между определением функции и линией «print_int»? Пока не ясно, из вашего поста, но если Вы писали:
let rec factorial x =
if (0 > x) then (raise Exit) else
match x with
0 -> 1
| n -> (n * (factorial (n - 1)))
print_int (n * (factorial (n - 1)));;
то же самое, как:
let rec factorial x =
if (0 > x) then (raise Exit) else
match x with
0 -> 1
| n -> (n * (factorial (n - 1))) print_int (n * (factorial (n - 1)));;
Так что вы хотите есть:
let rec factorial x =
if (0 > x) then (raise Exit) else
match x with
0 -> 1
| n -> (n * (factorial (n - 1)));;
print_int (n * (factorial (n - 1)));;
Или, с не ";;" (Которые немного из моды):
let rec factorial x =
if (0 > x) then (raise Exit) else
match x with
0 -> 1
| n -> (n * (factorial (n - 1)))
let() = print_int (n * (factorial (n - 1)))
Конечно, это еще одна проблема, которая, что п несвязанных при вызове print_int, поэтому я не уверен, что понял ваш вопрос. Но следующий код работает нормально:
let rec factorial x =
if (0 > x) then (raise Exit) else
match x with
0 -> 1
| n -> (n * (factorial (n - 1)))
let() = print_int (factorial 10)
Можете ли вы опубликовать сообщение об ошибке? – Durandal
Ошибка: «Это выражение не является функцией, оно не может быть применено» –
Этот код работает для меня. –