在查看某些代码时,我发现了一个匹配条款:
| x::y::[] -> a_ref.contents <- []; [call_function x]
a_ref是一个列表引用。
有人可以描述发生了什么吗?具体在这里:a_ref.contents&lt; - []; [call_function x]
感谢。
答案 0 :(得分:2)
我说a_ref
实际上是list ref
。即,它是对列表的引用(不是引用列表)。
所以这里的诀窍是OCaml中的ref是秘密的一个带有名为contents
的可变字段的记录。有时它会派上用场。
但是,在这种情况下你可以说
a_ref := []
而不是
a_ref.contents <- []
事实上,你应该这样说,因为它更具惯用性。
其余的只是说最终值是包含call_function x
的结果的列表。