CurryInfo: nonstrictunif-optimize-3.0.0 / NonStrictOpt.optimizeNonstrictEquality

definition: Info
 
optimizeNonstrictEquality :: [FuncDecl] -> Prog -> ([QName],Int,Int,Prog)
optimizeNonstrictEquality allfuns (Prog mod imps ts funs ops) =
  let (cycfuns,nsus,lnsus,optfs) =
          unzip4 (map (optimizeFun (indirectlyDependent allfuns)
                                   (analyseRightLinearity allfuns)) funs)
  in (catMaybes cycfuns, sum nsus, sum lnsus, Prog mod imps ts optfs ops)
demand: Info
 argument 2
deterministic: Info
 deterministic operation
documentation: Info
 
---------------------------------------------------------------------------
Replace "=:<=" by "=:<<=" if the left argument is a linear term with
linear functions.
The first argument is the list of all functions occuring in the program,
the second argument is the current module to be optimized.
The result is a tuple containing the number of "=:<=" occurring in the
module, the number of the optimized occurrences, and the optimized module.
failfree: Info
 <FAILING>
indeterministic: Info
 referentially transparent operation
infix: Info
 no fixity defined
iotype: Info
 {(_,{Prog}) |-> {(,,,)}}
name: Info
 optimizeNonstrictEquality
precedence: Info
 no precedence defined
result-values: Info
 {(,,,)}
signature: Info
 [FlatCurry.Types.FuncDecl] -> FlatCurry.Types.Prog
-> ([(String, String)], Prelude.Int, Prelude.Int, FlatCurry.Types.Prog)
solution-complete: Info
 operation might suspend on free variables
terminating: Info
 possibly non-terminating
totally-defined: Info
 possibly non-reducible on same data term