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

Pac*_*ane 10 ocaml functional-programming ml pattern-matching

有没有更清洁的方式这样做?我正在尝试进行模式匹配

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

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

match a with
| _, l -> match !l with
  | (c, n)::t -> doSomething 
Run Code Online (Sandbox Code Playgroud)

难道没有办法a与其他东西相匹配......

match a with
| _, ref (c,n)::t -> doSomething
Run Code Online (Sandbox Code Playgroud)

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

谢谢你的回答.

sep*_*p2k 12

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

type 'a ref = {
    mutable contents : 'a;
}
Run Code Online (Sandbox Code Playgroud)

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

match a with
| _, { contents = (c,n)::t } -> doSomething
Run Code Online (Sandbox Code Playgroud)

  • (哇,我们完全同步了.) (5认同)

Jef*_*eld 12

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

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