开放记录模式的含义是什么?

时间:2016-03-31 09:17:06

标签: pattern-matching ocaml record

OCaml有一个明确的句法结构(参见Parsetree.pattern_desc, constructor Ppat_record)来区分" open"并且"关闭"记录模式。

这似乎对模式匹配没有任何影响:

utop # type r = {repr:int; foo:int} ;;
type r = { repr : int; foo : int; } 
utop # let f = function {repr} -> repr;;
val f : r -> int =  <fun> 
utop # let g = function {repr;_} -> repr;;
val g : r -> int = <fun> 

那么它的目的是什么?这是某种SML遗物吗?

1 个答案:

答案 0 :(得分:2)

这只是一种语言扩展,告诉编译器您有意忽略了某些字段,以便在忘记字段时发出警告。

http://caml.inria.fr/pub/docs/manual-ocaml/extn.html#sec226