1signature stmonad = 2sig 3type ('a, 'b) stmonad = 'a -> ('a * 'b) 4 5val >> : ('a, 'b) stmonad * ('a, 'c) stmonad -> ('a, 'c) stmonad 6val >- : ('a, 'b) stmonad * ('b -> ('a, 'c) stmonad) -> ('a, 'c) stmonad 7val ok : ('a, unit) stmonad 8val return : 'a -> ('b, 'a) stmonad 9 10val lift : ('a -> 'b) -> ('s,'a) stmonad -> ('s,'b)stmonad 11val lift2 : ('a -> 'b -> 'c) -> ('s,'a) stmonad -> ('s,'b) stmonad -> 12 ('s,'c) stmonad 13 14val mmap : ('a -> ('b, 'c) stmonad) -> 'a list -> ('b, 'c list) stmonad 15end 16