import Control.Monad.Reader
data Record = MkRecord {foo::[Int], bar::Int}
deriving (Show,Read)
initRec = MkRecord { foo=[1,2,3,4], bar=0}
-- This works
getFoo :: Record -> [Int]
getFoo rec = asks foo rec
getFoo2 :: Record -> [Int]
getFoo2 rec =
do result <- asks foo rec
return result
getFooFirst1 rec = head $ getFoo rec
getFooFirst2 rec = let result = asks foo rec
in head result
-- This does not work... why?
getFooFirst3 :: Record -> Int
getFooFirst3 rec =
do result <- asks foo rec
return $ head result