transformer
1 let Transformer = ./../Transformer/Type 2 3 in let Monad = ./../Monad/Type 4 5 in let StateT = ./Type 6 7 in λ(s : Type) 8 → { lift = 9 λ(m : Type → Type) 10 → λ(monad : Monad m) 11 → λ(a : Type) 12 → λ(ma : m a) 13 → λ(env : s) 14 → monad.bind 15 a 16 { val : a, state : s } 17 ma 18 ( λ(x : a) 19 → monad.pure { val : a, state : s } { val = x, state = env } 20 ) 21 } 22 : Transformer (StateT s)