Pattern matching 同一类型的多个名称,并在Ocaml中匹配
我试图使用这个库匹配不同的人脸组合(根据双图理论) 这样做的功能之一应该如下所示:Pattern matching 同一类型的多个名称,并在Ocaml中匹配,pattern-matching,ocaml,type-inference,Pattern Matching,Ocaml,Type Inference,我试图使用这个库匹配不同的人脸组合(根据双图理论) 这样做的功能之一应该如下所示: let type_of_edge (edge:Link.edg) = let {Link.i; _;} = edge in match i with | Link.Face.empty -> "777" | _ -> "888" 不幸的是,我遇到以下错误: 此模式与“a列表”类型的值匹配 但需要一个模式,该模式与t类型的值相匹配 我知道在模块Link.Face中,每个对象都是名为“
let type_of_edge (edge:Link.edg) =
let {Link.i; _;} = edge
in
match i with
| Link.Face.empty -> "777"
| _ -> "888"
不幸的是,我遇到以下错误:
此模式与“a列表”类型的值匹配
但需要一个模式,该模式与t类型的值相匹配
我知道在模块Link.Face中,每个对象都是名为“t”的类型,但为什么如果我使用该模块中的一个函数(Link.Face.empty),编译器会将其视为“列表类型”所以我的问题的答案显然是:
let type_of_edge (edge:Link.edg) =
let {Link.i; _;} = edge
in
match i with
| tmp when tmp = Link.Face.empty -> "777"
| _ -> "888"
我发现
对解决这个问题很有帮助