unlambda-0.1.4.2: Unlambda interpreter

Safe HaskellSafe
LanguageHaskell98

Language.Unlambda

Documentation

data Exp Source #

Constructors

App Exp Exp 
K 
K1 Exp 
S 
S1 Exp 
S2 Exp Exp 
I 
V 
C 
Cont (Cont Exp) 
D 
D1 Exp 
Dot Char 
E 
At 
Ques Char 
Pipe 

Instances

Show Exp Source # 

Methods

showsPrec :: Int -> Exp -> ShowS #

show :: Exp -> String #

showList :: [Exp] -> ShowS #

newtype Eval a Source #

Constructors

Eval ((Maybe Char, Int) -> Cont a -> IO Exp) 

Instances

Monad Eval Source # 

Methods

(>>=) :: Eval a -> (a -> Eval b) -> Eval b #

(>>) :: Eval a -> Eval b -> Eval b #

return :: a -> Eval a #

fail :: String -> Eval a #

Functor Eval Source # 

Methods

fmap :: (a -> b) -> Eval a -> Eval b #

(<$) :: a -> Eval b -> Eval a #

Applicative Eval Source # 

Methods

pure :: a -> Eval a #

(<*>) :: Eval (a -> b) -> Eval a -> Eval b #

(*>) :: Eval a -> Eval b -> Eval b #

(<*) :: Eval a -> Eval b -> Eval a #

type Cont a = (Maybe Char, Int) -> a -> IO Exp Source #

io :: IO a -> Eval a Source #

throw :: ((Maybe Char, Int) -> t -> IO Exp) -> t -> Eval a Source #

exit :: Exp -> Eval a Source #

callCC :: (((Maybe Char, Int) -> a -> IO Exp) -> Eval a) -> Eval a Source #