Ocaml:匹配子句箭头和引用

时间:2014-11-03 18:16:37

标签: ocaml

在查看某些代码时,我发现了一个匹配条款:

| x::y::[] -> a_ref.contents <- []; [call_function x]

a_ref是一个列表引用。

有人可以描述发生了什么吗?具体在这里:a_ref.contents&lt; - []; [call_function x]

感谢。

1 个答案:

答案 0 :(得分:2)

我说a_ref实际上是list ref。即,它是对列表的引用(不是引用列表)。

所以这里的诀窍是OCaml中的ref是秘密的一个带有名为contents的可变字段的记录。有时它会派上用场。

但是,在这种情况下你可以说

a_ref := []

而不是

a_ref.contents <- []

事实上,你应该这样说,因为它更具惯用性。

其余的只是说最终值是包含call_function x的结果的列表。