Skip to content

Instantly share code, notes, and snippets.

@mankyKitty
Created January 18, 2018 23:38
Show Gist options
  • Save mankyKitty/b87df31ccb60a5f807e6895af4afe221 to your computer and use it in GitHub Desktop.
Save mankyKitty/b87df31ccb60a5f807e6895af4afe221 to your computer and use it in GitHub Desktop.
instance (Monad m) => Monad (ReaderT r m) where
return = lift . return
(>>=) :: ReaderT r m a -> (a -> ReaderT r m b) -> ReaderT r m b
(ReaderT rma) >>= k = ReaderT $ \ r -> do
a <- rma r
let ReaderT rmb = k a -- rmb :: r -> m b
rmb r :: m b -- rmb r :: m b
ask :: Monad m => (ReaderT r m) r == (r -> m r)
ask = ReaderT return
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment