Skip to content

Instantly share code, notes, and snippets.

@k0001
Created December 22, 2012 14:17
Show Gist options
  • Save k0001/4359024 to your computer and use it in GitHub Desktop.
Save k0001/4359024 to your computer and use it in GitHub Desktop.
import Control.Monad.Instances
import Control.Monad.Reader
data Env = Env Int Int
foo :: Int -> Env -> Int
foo a (Env x _) = a + x
bar :: Int -> Env -> Int
bar a (Env _ y) = a * y
-- >>> foo 4 >>= bar $ Env 1 10
-- 50
foo' :: Int -> Reader Env Int
foo' a = do Env x _ <- ask
return $ a + x
bar' :: Int -> Reader Env Int
bar' a = do Env _ y <- ask
return $ a * y
-- >>> runReader (foo' 4 >>= bar') $ Env 1 10
-- 50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment