(* * Konzepte höherer Programmiersprachen (SS 2006) * * Übungsblatt 10 / Aufgabe 3 *) type counter = {inc: unit -> unit; get: unit -> int};; (* Aufgabe 3a *) let single_counter = let n = ref 0 in {inc = (fun u -> n := !n + 1); get = (fun u -> !n)};; single_counter.inc ();; single_counter.inc ();; single_counter.get ();; (* Aufgabe 3b *) let make_counter = fun u -> let n = ref 0 in {inc = (fun u -> n := !n + 1); get = (fun u -> !n)};; let c1 = make_counter ();; let c2 = make_counter ();; c1.inc ();; c2.inc ();; c1.get ();;