adam@15: (* Reactive sources that accept change listeners *) kkallio@14: adam@15: con t :: Type -> Type kkallio@14: adam@15: val create : a ::: Type -> a -> transaction (t a) kkallio@14: adam@15: val onChange : a ::: Type -> t a -> (a -> transaction {}) -> transaction {} kkallio@14: adam@15: val set : a ::: Type -> t a -> a -> transaction {} adam@15: val get : a ::: Type -> t a -> transaction a adam@15: val value : a ::: Type -> t a -> signal a