module ReaderMonad where instance Monad ((->) r) where return x = x `seq` const x m >>= f = m `seq` \r-> f (m r) r