definition:
|
bench :: Int -> String -> IO ()
bench k file = do
putStrLn (take 70 (repeat '='))
rules <- readRules (prog2DirFile file)
let absdom = depthDom k
maincalls = [abstractCall absdom (getMainCall rules)]
printProgram absdom rules maincalls
putStrLn $ "\nTotal number of rules: " ++ show (length rules)
putStrLn "\nRunning simple call analysis..."
semsimple <- runFixpoint absdom insertSemEq
rules maincalls False eqSemInt
putStrLn (showSemInt absdom semsimple)
putStrLn "\nRunning call analysis with ordered insertion..."
semord <- runFixpoint absdom (updateSemEq
(lessSpecificEqCallPattern lessDSpecific))
rules maincalls False eqSemInt
putStrLn (showSemInt absdom semord)
putStrLn "\nRunning call analysis with working lists..."
semwl <- runFixpointWL absdom (lessSpecificEqCallPattern lessDSpecific) rules maincalls False >>=
return . sort
if semord==semwl
then return ()
else putStrLn (showSemInt absdom semwl)
|
demand:
|
no demanded arguments
|
deterministic:
|
deterministic operation
|
documentation:
|
-- benchmark different interpretation methods:
|
failfree:
|
<FAILING>
|
indeterministic:
|
referentially transparent operation
|
infix:
|
no fixity defined
|
iotype:
|
{(_,_) |-> _}
|
name:
|
bench
|
precedence:
|
no precedence defined
|
result-values:
|
_
|
signature:
|
Prelude.Int -> String -> Prelude.IO ()
|
solution-complete:
|
operation might suspend on free variables
|
terminating:
|
possibly non-terminating
|
totally-defined:
|
possibly non-reducible on same data term
|