Safe Haskell | None |
---|---|
Language | Haskell2010 |
Interface for evaluation and compilation of pure expressions
- type VarId = Integer
- type family VarPred exp :: * -> Constraint
- class EvalExp exp where
- class CompExp exp where
- varExp :: VarPred exp a => VarId -> exp a
- compExp :: MonadC m => exp a -> m Exp
- compType :: forall m a. (MonadC m, VarPred exp a) => exp a -> m Type
- compTypeP :: forall proxy m a. (MonadC m, VarPred exp a) => proxy (exp a) -> m Type
- compTypePP :: forall proxy1 proxy2 m a. (MonadC m, VarPred exp a) => proxy1 exp -> proxy2 a -> m Type
- compTypePP2 :: forall proxy proxy1 proxy2 m a. (MonadC m, VarPred exp a) => proxy exp -> proxy1 (proxy2 a) -> m Type
- freshVar :: forall exp m a. (CompExp exp, VarPred exp a, MonadC m) => m (exp a, Id)
- freshVar_ :: forall exp m a. (CompExp exp, VarPred exp a, MonadC m) => m (exp a)
Documentation
type family VarPred exp :: * -> Constraint Source
Constraint on the types of variables in a given expression language
class EvalExp exp where Source
General interface for evaluating expressions
class CompExp exp where Source
General interface for compiling expressions
varExp, compExp, (compType | compTypeP | compTypePP | compTypePP2)
varExp :: VarPred exp a => VarId -> exp a Source
Variable expressions
compExp :: MonadC m => exp a -> m Exp Source
Compilation of expressions
NOTE: It is assumed that free variables in the expression are rendered as vIII
, where
III
is the variable identifier.
compType :: forall m a. (MonadC m, VarPred exp a) => exp a -> m Type Source
Extract expression type
compTypeP :: forall proxy m a. (MonadC m, VarPred exp a) => proxy (exp a) -> m Type Source
Extract expression type
compTypePP :: forall proxy1 proxy2 m a. (MonadC m, VarPred exp a) => proxy1 exp -> proxy2 a -> m Type Source
Extract expression type
compTypePP2 :: forall proxy proxy1 proxy2 m a. (MonadC m, VarPred exp a) => proxy exp -> proxy1 (proxy2 a) -> m Type Source
Extract expression type