Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Transform.CaseOfCase.Test
Synopsis
- test_caseOfCase ∷ TestTree
- caseOfCase1 ∷ Term Name DefaultUni DefaultFun ()
- caseOfCase2 ∷ Term Name DefaultUni DefaultFun ()
- caseOfCase3 ∷ Term Name DefaultUni DefaultFun ()
- caseOfCaseWithError ∷ Term Name DefaultUni DefaultFun ()
- testCaseOfCaseWithError ∷ TestTree
- evalCaseOfCase ∷ Term Name DefaultUni DefaultFun () → Term Name DefaultUni DefaultFun ()
- evaluateUplc ∷ Term Name DefaultUni DefaultFun () → EvaluationResult (Term Name DefaultUni DefaultFun ())
- goldenVsSimplified ∷ String → Term Name DefaultUni DefaultFun () → TestTree
Documentation
caseOfCase2 ∷ Term Name DefaultUni DefaultFun () Source #
This should not simplify, because one of the branches of ifThenElse
is not a Constr
.
Unless both branches are known constructors, the case-of-case transformation
may increase the program size.
caseOfCase3 ∷ Term Name DefaultUni DefaultFun () Source #
Similar to caseOfCase1
, but the type of the true
and false
branches is
[Integer]
rather than Bool (note that Constr 0
has two parameters, x
and xs
).
caseOfCaseWithError ∷ Term Name DefaultUni DefaultFun () Source #
case (force ifThenElse) True True False of True -> () False -> _|_
Evaluates to ()
because the first case alternative is selected.
(The _|_ is not evaluated because case alternatives are evaluated lazily).
After the CaseOfCase
transformation the program should evaluate to ()
as well.
force ((force ifThenElse) True (delay ()) (delay _|_))
evalCaseOfCase ∷ Term Name DefaultUni DefaultFun () → Term Name DefaultUni DefaultFun () Source #
evaluateUplc ∷ Term Name DefaultUni DefaultFun () → EvaluationResult (Term Name DefaultUni DefaultFun ()) Source #
goldenVsSimplified ∷ String → Term Name DefaultUni DefaultFun () → TestTree Source #