Новое в OCaml.
В основном пытаюсь скомпилировать кусок кода, в основном с двумя функциями, но я не могу скомпилировать его с ошибкой типа в строке 9, символы столбца 26-27, говоря:
"Ошибка: это выражение имеет тип t, но ожидалось выражение типа string" "
По сути, функция синтаксического анализа, вызываемая в строке 8, ожидает строку типа, но я не могу понять,почему.
Тип аргумента sexp:
type sexp = Atom of string | List of sexp list
код:
open Sexplib.Sexp
let rec parse_bindings bindings =
match bindings with
| [] -> []
| first::rest ->
match first with
| List([Atom(name); e]) ->
[(name, parse e)] @ (parse_bindings rest)
let rec parse sexp : expr =
match sexp with
| Atom(s) ->
(* some code *)
| List(sexps) ->
match sexps with
| (* some code *)
| [Atom("let"); List(bindings_sexp); e2] ->
let binding_expr = parse_bindings bindings in
ELet(binding_expr, parse e2)
| _ -> failwith "foo"