CurryInfo: call-analysis-3.2.0 / TRS.varsOf

definition:
varsOf :: Term -> [Int]
varsOf (Var v) = [v]
varsOf (Func _ f args)
  | f == "LAMBDA" = let (largs,lexp) = splitAt (length args - 1) args
                     in varsOf (head lexp) \\ concatMap varsOf largs
  | f == "LET" 
   = let (bindings,lexp) = splitAt (length args - 1) args
         bvars = concatMap (\ (Func _ _ [bvar,_]) -> varsOf bvar) bindings
      in varsOf (head lexp) \\ bvars
  | otherwise = foldr union [] (map varsOf args)
demand:
argument 1
deterministic:
deterministic operation
documentation:
-- get all variables in a term:
failfree:
<FAILING>
indeterministic:
referentially transparent operation
infix:
no fixity defined
iotype:
{({Var}) |-> {:} || ({Func}) |-> _}
name:
varsOf
precedence:
no precedence defined
result-values:
_
signature:
Term -> [Prelude.Int]
solution-complete:
operation might suspend on free variables
terminating:
possibly non-terminating
totally-defined:
possibly non-reducible on same data term