AXIWYERYL2PU4JVN5WBIGTOLCVB2R7DVILTRJHU7WNMYPWPJNAOAC module Algebra.Monadimport Builtinimport Algebra.Applicative%default totalpublic exportinterface Applicative t => Monad t wherebind : t a -> (a -> t b) -> t bproofLeftIdentity : (x : a) -> (f : a -> t b) -> Applicative.pure x `bind` f = f xproofRightIdentity : (x : t a) -> x `bind` Applicative.pure = xproofAssociativity : (x : t a) -> (f : a -> t b) -> (g : b -> t c)-> (x `bind` f) `bind` g = x `bind` (\x => f x `bind` g)