2016-03-31 9 views
1

OCaml hat ein explizites syntaktisches Konstrukt (siehe Parsetree.pattern_desc, constructor Ppat_record), um zwischen "offenen" und "geschlossenen" Aufzeichnungsmustern zu unterscheiden.Was bedeutet das offene Aufzeichnungsmuster?

Dies scheint keinerlei Einfluss auf die Musteranpassung zu haben:

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> 

Was ist/war ihr Zweck? Ist das eine Art SML-Relikt?

Antwort