38 lines · 735 B · Standard ML
RawDownload
type person = {name: string, age: int};val p1 : person = {name = "Peter", age = 99};val {name=name1, age=age1} = p1;fun nameOfPerson {name=x, age=_} = x;val name1 = nameOfPerson p1;val {name,age} = p1; val {name,...}:person = p1;val {name : string as name1,...} = p1; val f = fn {name=x,...}:person => x; val name1 = #name p1;val age1 = #age p1; fun f {lab=v} = v+1; fn _ =>					(* to cheat value polymorphism *) let  fun eq r1 r2 = (#l1 r1) = (#l1 r2)  val t = eq {l1 = 1, l2 = 3}             {l1 = 1, l3 = "a"}in  (eq, t)end; (printVal (it ()); ()); fn _ =>let  val f = fn {l1 = x,...} => x   val g = fn {l1 = x, l2 = y} => (x,y)  val h = fn x => (x=x, f x, g x)in  (f, g, h)end; (printVal (it ()); ());