CurryInfo: verify-non-fail-2.0.0 / Verify.WithSMT.allQNamesInExp

definition: Info
 
allQNamesInExp :: Expr -> [Either QName QName]
allQNamesInExp e =
  trExpr (const id) (const id) comb lt fr (.) cas branch const e []
 where
  comb ct qn exp = ((classifyName ct) qn:) . foldr (.) id exp
   where classifyName FuncCall         = Right
         classifyName (FuncPartCall _) = Right
         classifyName ConsCall         = Left
         classifyName (ConsPartCall _) = Left
  lt bs exp = exp . foldr (.) id (map snd bs)
  fr _ exp = exp
  cas _ exp bs = exp . foldr (.) id bs
  branch pat exp = ((args pat)++) . exp
  args (Pattern qc _) = [Left qc]
  args (LPattern _)   = []
demand: Info
 argument 1
deterministic: Info
 deterministic operation
documentation: Info
 
---------------------------------------------------------------------------
Get all qualified names occurring in an expression which are either
constructor or defined function names.
failfree: Info
 _
indeterministic: Info
 referentially transparent operation
infix: Info
 no fixity defined
iotype: Info
 {(_) |-> _}
name: Info
 allQNamesInExp
precedence: Info
 no precedence defined
result-values: Info
 _
signature: Info
 FlatCurry.Types.Expr -> [Prelude.Either (String, String) (String, String)]
solution-complete: Info
 operation might suspend on free variables
terminating: Info
 possibly non-terminating
totally-defined: Info
 reducible on all ground data terms