CurryInfo: verify-non-fail-2.0.0 / Verify.NonFailConditions.allFreeVars

definition: Info
 
allFreeVars :: Expr -> [Int]
allFreeVars e = trExpr (:) (const id) comb lt fr (.) cas branch const e []
 where
  comb _ _ = foldr (.) id
  lt bs exp = (filter (`notElem` (map fst bs))) . exp . foldr (.) id (map snd bs)
  fr vs exp = (filter (`notElem` vs)) . exp
  cas _ exp bs = exp . foldr (.) id bs
  branch pat exp = (filter (`notElem` (args pat))) . exp
  args pat | isConsPattern pat = patArgs pat
           | otherwise = []
demand: Info
 argument 1
deterministic: Info
 deterministic operation
documentation: Info
 
Gets all free variables (i.e., without let/free/pattern bound variables)
occurring in an expression.
failfree: Info
 <FAILING>
indeterministic: Info
 referentially transparent operation
infix: Info
 no fixity defined
iotype: Info
 {(_) |-> _}
name: Info
 allFreeVars
precedence: Info
 no precedence defined
result-values: Info
 _
signature: Info
 FlatCurry.Types.Expr -> [Prelude.Int]
solution-complete: Info
 operation might suspend on free variables
terminating: Info
 possibly non-terminating
totally-defined: Info
 possibly non-reducible on same data term