OCaml - 与元组中的列表引用进行模式匹配

时间:2012-04-25 03:47:36

标签: functional-programming pattern-matching ocaml ml

有更清洁的方法吗?我正在尝试进行

的模式匹配

(a' option * (char * nodeType) list ref

我找到的唯一方法是这样做:

match a with
| _, l -> match !l with
  | (c, n)::t -> doSomething 

没有办法让a与其他类似的东西相匹配......

match a with
| _, ref (c,n)::t -> doSomething

...或类似的东西?在这个例子中,只是做另一个匹配看起来并不重,但在实际情况下它可能有点......

感谢您的回答。

2 个答案:

答案 0 :(得分:12)

ref类型被定义为具有可变字段的记录:

type 'a ref = {
    mutable contents : 'a;
}

这意味着您可以使用以下记录语法对其进行模式匹配:

match a with
| _, { contents = (c,n)::t } -> doSomething

答案 1 :(得分:12)

在OCaml中,ref秘密地是一个名为contents的可变字段的记录。

match a with
| _, { contents = (c, n) :: t } -> (* Do something *)