OCaml选项返回值和选项匹配

Mug*_*gen 0 ocaml ml match optional

我想编写一个接受自定义类的值的函数myType,然后返回myType option.不确定我的问题是签名,内容还是返回值.

例如,我试图编写以下内容(它已经简化,没有任何实际意义):

let rec myFunc (t:myType) myType option =
  let t2 = myFunc t in
    match t2 with
    | None -> None
    | _ -> t
Run Code Online (Sandbox Code Playgroud)

我收到以下编译错误:

错误:此模式匹配'a选项类型的值,但预期模式匹配类型'b - >'c - >'d的值

不确定我的语法有什么问题,或者我误解了OCaml.

Jef*_*eld 5

我只看到一个缺少的冒号和Some:

let rec myFunc (t:myType): myType option =
    let t2 = myFunc t in
    match t2 with
    | None -> None
    | _ -> Some t
Run Code Online (Sandbox Code Playgroud)

稍微简化的版本:

let rec myFunc (t:myType): myType option =
    match myFunc t with
    | None -> None
    | _ -> Some t
Run Code Online (Sandbox Code Playgroud)