import Control.Monad.Reader
-- comp1 :: Reader Int Int
-- comp1 = do
-- r <- ask
-- return $ r * 4
comp1 :: Reader Int Int
comp1 = do
r <- ask
r2 <- comp2
comp3 $ r2 * 3
comp2 :: Reader Int Int
comp2 = do
r <- ask
return $ 10 * r
comp3 :: Int -> Reader Int Int
comp3 v = do
r <- ask
return $ r * v
main = print $ runReader comp1 5
-- livescript: http://test.pipend.com/branches/pFVR4Tb/