【发布时间】:2018-06-27 14:43:31
【问题描述】:
我,我在 ocaml 中有这个简单的程序
type tree = Node of string * exp * tree * tree | Empty
and exp = Etree of tree | EInt of int | List of (string*exp);;
let rec evalNode.......
and rec eval (e:exp) =
(match e with
| EInt _ -> e
| Etree(tree) -> (match tree with
| Empty -> []
| Node(s,i,t1,t2) -> (evalNode (tree)) )
)
evalNode : tree -> (string * exp) list = fun
eval : exp -> exp = fun
但返回此错误但我不明白这是什么意思,网络上没有太多关于 ocaml 的信息:
这个表达式有类型 (string * 'a) 列表, 但与 exp 类型一起使用。
Etree里面有一个类型Node,类型tree也是,所以我可以用这个值调用evalNode,因为它想要一个树类型
evalNode 返回一个 (string*exp) 的列表,但它是一个 exp,所以 eval 可以返回这个
【问题讨论】:
-
我想你可能会将
List of (string*exp)与(string*exp) list混淆 -
我相信@glennsl 搞定了,但是没有错误源的位置,没有实际代码,我们只能猜测你的问题!