我想编写一个接受自定义类myType
的值的函数,并返回myType option
。不确定我的问题是签名,内容还是返回值。
例如,我尝试编写以下内容(它简化并没有实际意义):
let rec myFunc (t:myType) myType option =
let t2 = myFunc t in
match t2 with
| None -> None
| _ -> t
我收到以下编译错误:
错误:此模式匹配类型'选项的值 但是期望一种模式匹配类型的值&#b;> &#c; c - > ' d
不确定我的语法有什么问题,或者我误解了OCaml。
答案 0 :(得分:5)
我只看到一个缺少的冒号和Some
:
let rec myFunc (t:myType): myType option =
let t2 = myFunc t in
match t2 with
| None -> None
| _ -> Some t
稍微精简的版本:
let rec myFunc (t:myType): myType option =
match myFunc t with
| None -> None
| _ -> Some t