|
definition: |
runWith :: IOptions -> State -> [TG.State] -> IO (IOptions, [TG.State])
runWith opts st states
| optMaxSteps (icOptions opts) == length states
= do printState opts st
return (opts, states)
| null (tasks st)
= do printState opts st
let nstates = addTGState (icOptions opts) st states
return (opts, nstates)
| otherwise
= do printState opts st
let nstates = addTGState (icOptions opts) st states
procstep <- if optVerb (icOptions opts) > 0 then askProceed opts
else return True
if not procstep
then return (opts, nstates)
else do
let num = stepNum opts
nopts = if num==0 then opts else opts { stepNum = num + 1 }
nst = step st
maybe (runWith nopts nst nstates)
(\nid -> do putStrLn $ "RESULT: " ++
showGraphExp (graph nst) nid
proceed <- askProceed opts
if proceed
then runWith nopts
(nst {currResult = Nothing})
nstates
else return (opts, nstates))
(currResult nst)
|
|
demand: |
no demanded arguments |
|
deterministic: |
deterministic operation |
|
failfree: |
<FAILING> |
|
indeterministic: |
referentially transparent operation |
|
infix: |
no fixity defined |
|
iotype: |
{(_,_,_) |-> _}
|
|
name: |
runWith |
|
precedence: |
no precedence defined |
|
result-values: |
_ |
|
signature: |
IOptions -> State -> [TermGraph.XML.State] -> Prelude.IO (IOptions, [TermGraph.XML.State]) |
|
solution-complete: |
operation might suspend on free variables |
|
terminating: |
possibly non-terminating |
|
totally-defined: |
possibly non-reducible on same data term |