【发布时间】:2019-10-30 03:51:01
【问题描述】:
这里是 OCaml 的新手。
基本上试图用两个函数编译一段代码,但我无法编译它,第 9 行,第 26-27 列字符出现类型错误,说:
"错误:此表达式的类型为 t,但表达式应为类型 字符串""
基本上,第 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"
【问题讨论】:
-
你应该发布一个独立的小例子。由于
(* some code *)和缺少定义,此代码无法编译。如果人们可以自己尝试您的代码,那么提供帮助会容易得多。
标签: ocaml