Portability | unportable |
---|---|
Stability | unstable |
Maintainer | Martin Avanzini <martin.avanzini@uibk.ac.at> |
Safe Haskell | Safe-Infered |
This module implements all transformation combinators.
- timeout :: Int -> TheTransformer t -> TheTransformer (Timeout t)
- data Timeout t = Timeout t Int
- data TimeoutProof t
- timed :: Transformer t => TheTransformer t -> TheTransformer (Timed t)
- data Timed t
- data TimedProof t = TimedProof {}
- try :: Transformer t => TheTransformer t -> TheTransformer (Try t)
- force :: Transformer t => TheTransformer t -> TheTransformer (Try t)
- data Try t = Try Bool t
- data TryProof t = TryProof Bool (ProofOf t)
- (>>>) :: (Transformer t1, Transformer t2) => TheTransformer t1 -> TheTransformer t2 -> TheTransformer SomeTransformation
- exhaustively :: Transformer t => TheTransformer t -> TheTransformer SomeTransformation
- data t1 :>>>: t2 = (TheTransformer t1) :>>>: (TheTransformer t2)
- data ComposeProof t1 t2 = ComposeProof (Result t1) (Maybe (Enumeration (Result t2)))
- (<>) :: (Transformer t1, Transformer t2) => TheTransformer t1 -> TheTransformer t2 -> TheTransformer SomeTransformation
- (<||>) :: (Transformer t1, Transformer t2) => TheTransformer t1 -> TheTransformer t2 -> TheTransformer SomeTransformation
- data t1 :<>: t2 = Choice {
- fstChoice :: TheTransformer t1
- sndChoice :: TheTransformer t2
- parChoice :: Bool
- data ChoiceProof t1 t2
- withProblem :: (Problem -> TheTransformer t) -> TheTransformer (WithProblem t)
- data WithProblem t = WithProblem (Problem -> TheTransformer t)
- data WithProblemProof t = WithProblemProof (TheTransformer t) (ProofOf t)
- idtrans :: TheTransformer Id
- data Unique a
Timeout
timeout :: Int -> TheTransformer t -> TheTransformer (Timeout t)
data Timeout t
Transformer t => Transformer (Timeout t) | |
(Transformer t, TransformationProof t) => TransformationProof (Timeout t) | |
Transformer t => TimesOut (TheTransformer t) (TheTransformer (Timeout t)) |
data TimeoutProof t
Timed
timed :: Transformer t => TheTransformer t -> TheTransformer (Timed t)
The transformer timed t
behaves like t
but additionally measures the execution time.
data Timed t
Transformer t => Transformer (Timed t) | |
(Transformer t, TransformationProof t) => TransformationProof (Timed t) | |
Transformer t => Timed (TheTransformer t) (TheTransformer (Timed t)) |
data TimedProof t
Try
try :: Transformer t => TheTransformer t -> TheTransformer (Try t)
The transformer try t
behaves like t
but succeeds even if t
fails. When t
fails
the input problem is returned.
force :: Transformer t => TheTransformer t -> TheTransformer (Try t)
The transformer force t
behaves like t
but fails always whenever no
progress is achieved.
data Try t
Transformer t => Transformer (Try t) | |
(Transformer t, TransformationProof t) => TransformationProof (Try t) |
Composition
(>>>) :: (Transformer t1, Transformer t2) => TheTransformer t1 -> TheTransformer t2 -> TheTransformer SomeTransformation
The transformer t1 >>> t2
first transforms using t1
, resulting subproblems are
transformed using t2
.
exhaustively :: Transformer t => TheTransformer t -> TheTransformer SomeTransformation
The transformer exhaustively t
applies t
repeatedly until t
fails.
exhaustively t == t
.
>>>
try (exhaustively t)
data t1 :>>>: t2
(TheTransformer t1) :>>>: (TheTransformer t2) |
(Transformer t1, Transformer t2) => Transformer (:>>>: t1 t2) | |
(TransformationProof t1, Transformer t1, Transformer t2) => TransformationProof (:>>>: t1 t2) |
data ComposeProof t1 t2
ComposeProof (Result t1) (Maybe (Enumeration (Result t2))) |
Choice
(<>) :: (Transformer t1, Transformer t2) => TheTransformer t1 -> TheTransformer t2 -> TheTransformer SomeTransformation
The transformer t1 <> t2
transforms the input using t1
if successfull, otherwise
t2
is applied.
(<||>) :: (Transformer t1, Transformer t2) => TheTransformer t1 -> TheTransformer t2 -> TheTransformer SomeTransformation
The transformer t1 <||> t2
applies the transformations t1
and
t2
in parallel, using the result of whichever transformation succeeds first.
data t1 :<>: t2
Choice | |
|
(Transformer t1, Transformer t2) => Transformer (:<>: t1 t2) | |
(Transformer t1, Transformer t2) => TransformationProof (:<>: t1 t2) |
data ChoiceProof t1 t2
WithProblem
withProblem :: (Problem -> TheTransformer t) -> TheTransformer (WithProblem t)
data WithProblem t
WithProblem (Problem -> TheTransformer t) |
Transformer t => Transformer (WithProblem t) | |
Transformer t => TransformationProof (WithProblem t) | |
Transformer t => WithProblem (TheTransformer t) (TheTransformer (WithProblem t)) |
data WithProblemProof t
WithProblemProof (TheTransformer t) (ProofOf t) |
ID
idtrans :: TheTransformer Id
Identity transformation.