我不知道我能不能像这样定义bin_tree:
type 'a bin_tree = Node of { data : 'a ; left : 'a bin_tree; right : 'a bin_tree; } | Leaf
Merlin告诉我:类型中的错误,期待_
答案 0 :(得分:5)
您正在使用内联记录,这是一种自4.03.0版以来才可用的新语言功能。
从4.03.0开始,可以执行以下操作:
type t = A of { ... } | B
在4.03.0之前,您必须单独定义记录类型:
type t = A of r | B and r = { ... }
您必须相应地重写代码或将OCaml安装切换到版本4.03.0或更高版本。
答案 1 :(得分:0)
记录类型尚未定义 - 记录定义与bin_tree相关,因此您必须共同定义它们,请尝试:
type 'a pp = {data : 'a; left: 'a bin_tree; right : 'a bin_tree} and 'a bin_tree = Node of 'a pp | Leaf ;;