Quick actions

cmd+k|ctrl+k

Navigation

Languages

ReaderMonad

Snippet info

Language

Haskell

Visibility

public

Author

davidkaste

Created

2018-01-24T14:41:13Z

Updated

2018-01-26T12:35:35Z

module Main where

import Control.Monad.Reader

data Person = Pr { name    :: String,
                   age     :: Integer,
                   address :: String }
                   
type PersonReader = Reader Person String
                   
getName :: PersonReader
getName = do
    n <- asks name
    return $ "Name: " ++ n
    
getAge :: PersonReader
getAge = do
    n <- asks age
    return $ "Age: " ++ show n
    
getAddress :: PersonReader
getAddress = do
    n <- asks address
    return $ "Address: " ++ n
                   
showPerson :: PersonReader
showPerson = do
    x <- getName
    y <- getAge
    z <- getAddress
    return . unlines $ [x, y, z]

main = putStrLn $ runReader showPerson $ (Pr "Someone" 32 "HOME")
INFO