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

definition:
 
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:
 argument 1
deterministic:
 deterministic operation
documentation:
 
Gets all free variables (i.e., without let/free/pattern bound variables)
occurring in an expression.
failfree:
 <FAILING>
indeterministic:
 referentially transparent operation
infix:
 no fixity defined
iotype:
 {(_) |-> _}
name:
 allFreeVars
precedence:
 no precedence defined
result-values:
 _
signature:
 FlatCurry.Types.Expr -> [Prelude.Int]
solution-complete:
 operation might suspend on free variables
terminating:
 possibly non-terminating
totally-defined:
 possibly non-reducible on same data term