CurryInfo: call-analysis-3.2.0 / Analysis.extractStrictness

definition: Info
 
extractStrictness :: Eq a => ADom a -> SemInt a -> [(String,[Int])]
extractStrictness adom aint = map checkStrictArgs allfuncs
 where
  abot = adomBottom adom

  allfuncs = nub (map (\ (Eq f args _) -> (f,length args)) aint)

  checkStrictArgs (f,n) = (f,concatMap checkStrictArg [1..n])
   where
     checkStrictArg i =
       let argibotEqs = filter (\ (Eq g args _) -> f==g && args!!(i-1) == abot)
                               aint
        in if not (null argibotEqs) && all (\ (Eq _ _ r) -> r==abot) argibotEqs
           then [i]
           else []
demand: Info
 argument 3
deterministic: Info
 deterministic operation
documentation: Info
 
extract list of strict arguments for each function from least fixpoint
failfree: Info
 <FAILING>
indeterministic: Info
 referentially transparent operation
infix: Info
 no fixity defined
iotype: Info
 {(_,_,_) |-> {:,[]}}
name: Info
 extractStrictness
precedence: Info
 no precedence defined
result-values: Info
 {:,[]}
signature: Info
 Prelude.Eq a => ADom a -> [SemEq a] -> [(String, [Prelude.Int])]
solution-complete: Info
 operation might suspend on free variables
terminating: Info
 possibly non-terminating
totally-defined: Info
 possibly non-reducible on same data term