definition: |
trExpr :: (a -> VarIndex -> b) -> (a -> Literal -> b) -> (a -> CombType -> (QName, a) -> [b] -> b) -> (a -> [((VarIndex, a), b)] -> b -> b) -> (a -> [(VarIndex, a)] -> b -> b) -> (a -> b -> b -> b) -> (a -> CaseType -> b -> [c] -> b) -> (APattern a -> b -> c) -> (a -> b -> TypeExpr -> b) -> AExpr a -> b trExpr var _ _ _ _ _ _ _ _ (AVar a n) = var a n trExpr _ lit _ _ _ _ _ _ _ (ALit a l) = lit a l trExpr var lit comb lt fr or cas branch typed (AComb a ct name args) = comb a ct name (map (trExpr var lit comb lt fr or cas branch typed) args) trExpr var lit comb lt fr or cas branch typed (ALet a bs e) = lt a (map (\ (n,exp) -> (n,f exp)) bs) (f e) where f = trExpr var lit comb lt fr or cas branch typed trExpr var lit comb lt fr or cas branch typed (AFree a vs e) = fr a vs (trExpr var lit comb lt fr or cas branch typed e) trExpr var lit comb lt fr or cas branch typed (AOr a e1 e2) = or a (f e1) (f e2) where f = trExpr var lit comb lt fr or cas branch typed trExpr var lit comb lt fr or cas branch typed (ACase a ct e bs) = cas a ct (f e) (map (\ (ABranch pat exp) -> branch pat (f exp)) bs) where f = trExpr var lit comb lt fr or cas branch typed trExpr var lit comb lt fr or cas branch typed (ATyped a e ty) = typed a (trExpr var lit comb lt fr or cas branch typed e) ty |
demand: |
argument 10 |
deterministic: |
deterministic operation |
documentation: |
--- transform expression |
failfree: |
(_, _, _, _, _, _, _, _, _, _) |
indeterministic: |
referentially transparent operation |
infix: |
no fixity defined |
iotype: |
{(_,_,_,_,_,_,_,_,_,{AVar}) |-> _ || (_,_,_,_,_,_,_,_,_,{ALit}) |-> _ || (_,_,_,_,_,_,_,_,_,{AComb}) |-> _ || (_,_,_,_,_,_,_,_,_,{ALet}) |-> _ || (_,_,_,_,_,_,_,_,_,{AFree}) |-> _ || (_,_,_,_,_,_,_,_,_,{AOr}) |-> _ || (_,_,_,_,_,_,_,_,_,{ACase}) |-> _ || (_,_,_,_,_,_,_,_,_,{ATyped}) |-> _} |
name: |
trExpr |
precedence: |
no precedence defined |
result-values: |
_ |
signature: |
(a -> Prelude.Int -> b) -> (a -> FlatCurry.Types.Literal -> b) -> (a -> FlatCurry.Types.CombType -> ((String, String), a) -> [b] -> b) -> (a -> [((Prelude.Int, a), b)] -> b -> b) -> (a -> [(Prelude.Int, a)] -> b -> b) -> (a -> b -> b -> b) -> (a -> FlatCurry.Types.CaseType -> b -> [c] -> b) -> (FlatCurry.Annotated.Types.APattern a -> b -> c) -> (a -> b -> FlatCurry.Types.TypeExpr -> b) -> FlatCurry.Annotated.Types.AExpr a -> b |
solution-complete: |
operation might suspend on free variables |
terminating: |
possibly non-terminating |
totally-defined: |
reducible on all ground data terms |