annotate sourceL.ur @ 30:c1f06342c81f

Add margin example
author Adam Chlipala <adam@chlipala.net>
date Sat, 12 May 2012 10:07:45 -0400
parents 8300d5f0dc19
children
rev   line source
adam@15 1 con t a = {Source : source a,
adam@15 2 OnSet : source (a -> transaction {})}
kkallio@14 3
adam@15 4 fun create [a] (i : a) =
adam@15 5 s <- source i;
adam@15 6 f <- source (fn _ => return ());
kkallio@14 7
adam@15 8 return {Source = s,
adam@15 9 OnSet = f}
kkallio@14 10
adam@15 11 fun onChange [a] (t : t a) f =
adam@15 12 old <- get t.OnSet;
adam@15 13 set t.OnSet (fn x => (old x; f x))
kkallio@14 14
adam@15 15 fun set [a] (t : t a) (v : a) =
adam@15 16 Basis.set t.Source v;
adam@15 17 f <- get t.OnSet;
adam@15 18 f v
kkallio@14 19
adam@15 20 fun get [a] (t : t a) = Basis.get t.Source
kkallio@14 21
adam@15 22 fun value [a] (t : t a) = signal t.Source