CurryInfo: flatcurry-annotated-3.3.0 / FlatCurry.Annotated.Goodies.trExpr

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