OCaml选项返回值和选项匹配

时间:2016-12-31 19:58:08

标签: match ocaml optional ml

我想编写一个接受自定义类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。

1 个答案:

答案 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