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

definition: Info
 
nonFailCondsOfModule :: Prog -> [(QName,NonFailCond)]
nonFailCondsOfModule prog = map toNFCond nfconds
 where
  toNFCond fdecl = (stripNF (funcName fdecl),
                    (ruleTVars,
                     trRule (\_ exp -> exp) (const fcTrue) (funcRule fdecl)))
   where
    ruleTVars = zip (trRule (\args _ -> args) (const []) (funcRule fdecl))
                    (argTypes (funcType fdecl))

  stripNF (mn,fn) = (mn, take (length fn - length nonfailSuffix) fn)

  nfconds = filter ((nonfailSuffix `isSuffixOf`) . snd . funcName)
                   (progFuncs prog)
demand: Info
 no demanded arguments
deterministic: Info
 deterministic operation
documentation: Info
 
Extracts explicit non-fail conditions specified in a module as
operations with suffix `'nonfail`.
failfree: Info
 _
indeterministic: Info
 referentially transparent operation
infix: Info
 no fixity defined
iotype: Info
 {(_) |-> {:,[]}}
name: Info
 nonFailCondsOfModule
precedence: Info
 no precedence defined
result-values: Info
 {:,[]}
signature: Info
 FlatCurry.Types.Prog
-> [((String, String), ([(Prelude.Int, FlatCurry.Types.TypeExpr)], FlatCurry.Types.Expr))]
solution-complete: Info
 operation might suspend on free variables
terminating: Info
 possibly non-terminating
totally-defined: Info
 reducible on all ground data terms