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

11

有没有更简洁的方法来处理这个问题?我正在尝试对以下模式进行匹配:

(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个回答

13

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

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

这意味着您可以使用记录语法针对它进行模式匹配,例如:
match a with
| _, { contents = (c,n)::t } -> doSomething

6
哇,我们完全同步了。 - Jeffrey Scofield

13
在OCaml中,ref实际上是一个具有可变字段contents的记录。
match a with
| _, { contents = (c, n) :: t } -> (* Do something *)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接