packages feed

effect-monad-0.6: examples/ReadOnceReader.hs

{-# LANGUAGE RebindableSyntax, NoMonomorphismRestriction #-}

import Prelude hiding (Monad(..))
import Control.Effect
import Control.Effect.Cond
import Control.Effect.ReadOnceReader

foo = do x <- ask
         y <- ask 
         return ("Name " ++ x ++ " age " ++ (show y))

--foo_eval = foo (HCons' 'a' (HCons' "bc" HNil'))

foo2 = do x <- ask 
          y <- ask
          xs <- ask
          return (x : (y : xs))

foo2' = do x <- ask 
           xs' <- do y <- ask
                     xs <- ask
                     return (y:xs)
           return (x : xs')

foo2_eval foo2 = runReader foo2 (Cons 'a' (Cons 'b' (Cons "c" Nil)))

foo3 = do x <- ask
          ifM x ask (return 0)

foo3_eval = runReader foo3 (Cons False (Cons 42 Nil))