В вашем коде довольно много ошибок.
Я думаю, что конкретная ошибка, которую вы видите, вызвана тем, что после let rec lp ...
.
* 1006 нет
in
.За каждым
let
, который не находится на верхнем уровне модуля, должен следовать
in
.Один из способов думать об этом состоит в том, что это способ объявления локальной переменной для использования в выражении, которое появляется после
in
.Но вам нужно иметь
in expr
.
Еще один способ взглянуть на это состоит в том, что вы определяете функцию с именем lp
, но нигде ее не вызываете.
Как@ lambda.xy.x указывает, что вы не можете сказать if [] then ...
, потому что []
не относится к типу bool
.И вы не можете сказать let x = e1 y = e2 in ...
.Правильная форма для этого - let x = e1 in let y = e2 in ...
(или вы можете написать let x, y = e1, e2 in ...
, что выглядит лучше для определения двух одинаковых переменных для двух одинаковых значений.)