ajhc-0.8.0.8: Haskell compiler that produce binary through C language

Safe HaskellNone

E.Values

Synopsis

Documentation

eTuple :: [E] -> ESource

eTuple' :: [E] -> ESource

unboxedTuple :: (CanType e, ~ * (TypeOf e) E) => [e] -> Lit e ESource

class ToE a whereSource

Methods

toE :: a -> ESource

typeE :: a -> ESource

Instances

class ToEzh a whereSource

Methods

toEzh :: a -> ESource

typeEzh :: a -> ESource

eCons :: E -> E -> ESource

eNil :: E -> ESource

eCaseTup :: E -> [TVr] -> E -> ESource

eCaseTup' :: E -> [TVr] -> E -> ESource

eJustIO :: E -> E -> ESource

eCase :: E -> [Alt E] -> E -> ESource

eLet :: TVr -> E -> E -> ESource

This takes care of types right away, it simplifies various other things to do it this way.

eStrictLet :: TVr' E -> E -> E -> ESource

strict version of let, evaluates argument before assigning it.

substLet :: [(TVr, E)] -> E -> ESource

substLet' :: [(TVr, E)] -> E -> ESource

eLetRec :: [(TVr, E)] -> E -> ESource

prim_seq :: E -> E -> ESource

isFullyConst :: E -> BoolSource

whether a value is a compile time constant

isAtomic :: E -> BoolSource

whether a value may be used as an argument to an application, literal, or primitive these may be duplicated with no code size or runtime penalty

isManifestAtomic :: E -> BoolSource

whether a type is obviously atomic. fast and lazy, doesn't recurse True -> definitely atomic False -> maybe atomic

isSmall :: E -> BoolSource

whether an expression is small enough that it can be duplicated without code size growing too much. (work may be repeated)

isCheap :: E -> BoolSource

whether an expression may be duplicated or pushed inside a lambda without duplicating too much work

isLifted :: E -> BoolSource

determine if term can contain _|_

eToPat :: Monad m => E -> m (Lit TVr E)Source

patToE :: Monad m => Lit TVr E -> m ESource