CurryInfo: flatcurry-4.0.0 / FlatCurry.Goodies.trExpr

definition:
trExpr :: (Int -> a) ->
          (Literal -> a) ->
          (CombType -> QName -> [a] -> a) ->
          ([(Int,a)] -> a -> a) ->
          ([Int] -> a -> a) ->
          (a -> a -> a) ->
          (CaseType -> a -> [b] -> a) ->
          (Pattern -> a -> b) ->
          (a -> TypeExpr -> a)
          -> Expr -> a
trExpr var _ _ _ _ _ _ _ _ (Var n) = var n

trExpr _ lit _ _ _ _ _ _ _ (Lit l) = lit l

trExpr var lit comb lt fr or cas branch typed (Comb ct name args)
  = comb ct name (map (trExpr var lit comb lt fr or cas branch typed) args)

trExpr var lit comb lt fr or cas branch typed (Let bs e)
  = lt (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 (Free vs e)
  = fr vs (trExpr var lit comb lt fr or cas branch typed e)

trExpr var lit comb lt fr or cas branch typed (Or e1 e2) = or (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 (Case ct e bs)
  = cas ct (f e) (map (\ (Branch 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 (Typed e ty)
  = typed (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:
{(_,_,_,_,_,_,_,_,_,{Var}) |-> _ || (_,_,_,_,_,_,_,_,_,{Lit}) |-> _ || (_,_,_,_,_,_,_,_,_,{Comb}) |-> _ || (_,_,_,_,_,_,_,_,_,{Let}) |-> _ || (_,_,_,_,_,_,_,_,_,{Free}) |-> _ || (_,_,_,_,_,_,_,_,_,{Or}) |-> _ || (_,_,_,_,_,_,_,_,_,{Case}) |-> _ || (_,_,_,_,_,_,_,_,_,{Typed}) |-> _}
name:
trExpr
precedence:
no precedence defined
result-values:
_
signature:
(Prelude.Int -> a) -> (FlatCurry.Types.Literal -> a)
-> (FlatCurry.Types.CombType -> (String, String) -> [a] -> a)
-> ([(Prelude.Int, a)] -> a -> a) -> ([Prelude.Int] -> a -> a) -> (a -> a -> a)
-> (FlatCurry.Types.CaseType -> a -> [b] -> a) -> (FlatCurry.Types.Pattern -> a
-> b) -> (a -> FlatCurry.Types.TypeExpr -> a) -> FlatCurry.Types.Expr -> a
solution-complete:
operation might suspend on free variables
terminating:
possibly non-terminating
totally-defined:
reducible on all ground data terms