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遗物吗?
答案 0 :(得分:2)
这只是一种语言扩展,告诉编译器您有意忽略了某些字段,以便在忘记字段时发出警告。