CurryInfo: abstract-haskell-3.0.0 / AbstractHaskell.Goodies.renameSymbolInExpr

definition:
renameSymbolInExpr :: (QName -> QName) -> Expr -> Expr
renameSymbolInExpr ren exp = case exp of
  Var _               -> exp
  Lit _               -> exp
  Symbol qf           -> Symbol (ren qf)
  Apply e1 e2         -> Apply (renameSymbolInExpr ren e1)
                               (renameSymbolInExpr ren e2)
  InfixApply e1 op e2 -> InfixApply (renameSymbolInExpr ren e1)
                                    (ren op)
                                    (renameSymbolInExpr ren e2)
  Lambda pats e       -> Lambda (map (renameSymbolInPat ren) pats)
                                  (renameSymbolInExpr ren e)
  Let locals e        -> Let (map (renameSymbolInLocal ren) locals)
                                  (renameSymbolInExpr ren e)
  DoExpr stats        -> DoExpr (map (renameSymbolInStat ren) stats)
  ListComp e stats    -> ListComp (renameSymbolInExpr ren e)
                                    (map (renameSymbolInStat ren) stats)
  Case e branches     -> Case (renameSymbolInExpr ren e)
                                (map (renameSymbolInBranch ren) branches)
  Typed e ty          -> Typed (renameSymbolInExpr ren e) ty
  IfThenElse e1 e2 e3 -> IfThenElse (renameSymbolInExpr ren e1)
                                    (renameSymbolInExpr ren e2)
                                    (renameSymbolInExpr ren e3)
  Tuple es            -> Tuple (map (renameSymbolInExpr ren) es)
  List  es            -> List  (map (renameSymbolInExpr ren) es)
demand:
argument 2
deterministic:
deterministic operation
failfree:
(_, _)
indeterministic:
referentially transparent operation
infix:
no fixity defined
iotype:
{(_,{Var}) |-> {Var} || (_,{Lit}) |-> {Lit} || (_,{Symbol}) |-> {Symbol} || (_,{Apply}) |-> {Apply} || (_,{InfixApply}) |-> {InfixApply} || (_,{Lambda}) |-> {Lambda} || (_,{Let}) |-> {Let} || (_,{DoExpr}) |-> {DoExpr} || (_,{ListComp}) |-> {ListComp} || (_,{Case}) |-> {Case} || (_,{Typed}) |-> {Typed} || (_,{IfThenElse}) |-> {IfThenElse} || (_,{Tuple}) |-> {Tuple} || (_,{List}) |-> {List}}
name:
renameSymbolInExpr
precedence:
no precedence defined
result-values:
_
signature:
((String, String) -> (String, String)) -> AbstractHaskell.Types.Expr
-> AbstractHaskell.Types.Expr
solution-complete:
operation might suspend on free variables
terminating:
possibly non-terminating
totally-defined:
reducible on all ground data terms