definition: |
verifyExpr :: TermDomain a => Bool -> Expr -> VerifyStateM a Int verifyExpr verifyexp exp = case exp of Var v -> do iots <- if verifyexp then verifyVarExpr v exp else return [(v, ioVarType anyType)] addVarTypes iots return v _ -> do v <- newFreshVarIndex addVarExps [(v, unknownType, exp)] iots <- if verifyexp then verifyVarExpr v exp else return [(v, ioVarType anyType)] addVarTypes iots return v |
demand: |
argument 3 |
deterministic: |
deterministic operation |
documentation: |
-- Verify an expression (if the first argument is `True`) and, -- if the expression is not a variable, create a fresh -- variable and a binding for this variable. -- The variable which identifies the expression is returned. |
indeterministic: |
might be indeterministic |
infix: |
no fixity defined |
name: |
verifyExpr |
precedence: |
no precedence defined |
result-values: |
_ |
signature: |
Analysis.TermDomain.TermDomain a => Prelude.Bool -> FlatCurry.Types.Expr -> Control.Monad.Trans.State.StateT (VerifyState a) Prelude.IO Prelude.Int |
solution-complete: |
operation might suspend on free variables |
terminating: |
possibly non-terminating |
totally-defined: |
possibly non-reducible on same data term |