| Portability | unportable |
|---|---|
| Stability | unstable |
| Maintainer | Martin Avanzini <martin.avanzini@uibk.ac.at> |
| Safe Haskell | Safe-Infered |
Tct.Method.TCombinator
Contents
Description
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
Instances
| 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
Instances
| 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
Instances
| 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
Constructors
| (TheTransformer t1) :>>>: (TheTransformer t2) |
Instances
| (Transformer t1, Transformer t2) => Transformer (:>>>: t1 t2) | |
| (TransformationProof t1, Transformer t1, Transformer t2) => TransformationProof (:>>>: t1 t2) |
data ComposeProof t1 t2
Constructors
| 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
Constructors
| Choice | |
Fields
| |
Instances
| (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
Constructors
| WithProblem (Problem -> TheTransformer t) |
Instances
| Transformer t => Transformer (WithProblem t) | |
| Transformer t => TransformationProof (WithProblem t) | |
| Transformer t => WithProblem (TheTransformer t) (TheTransformer (WithProblem t)) |
data WithProblemProof t
Constructors
| WithProblemProof (TheTransformer t) (ProofOf t) |
ID
idtrans :: TheTransformer Id
Identity transformation.