- 0.4.0.0
-
How failure is handled has been refined somewhat. Previously, if a tactic failed, then the extraction process was terminated, and
proofs
would return aLeft
describing the error. This design worked, but led to some suboptimal error reporting. To fix this, theFailure
constructor fromProofStateT
has been changed from| Failure err
to
| Failure err (ext' -> ProofStateT ext' ext err s m goal)
This allows us the option to continue the extraction process even in the face of failure. This option is exercised in
partialProofs
andrunPartialTacticT
. -
A bunch of helpful combinators have been added for extract manipulation inside of tactics.
-
proofs
no longer returns a tuple, but rather a record typedata Proof s meta goal ext = Proof { pf_extract :: ext, pf_state :: s, pf_unsolvedGoals :: [(meta, goal)] }
-
Added
handler
, and removed theMonadError
instance forTacticT
. Now, instead of recovering from errors (which was fraught with subtle issues), we allow the user to annotate errors instead. -
Added some useful tactic combinators:
- tweak
- peek
- poke
- inspect
- some_
-
Swapped the order of arguments to
mapExtract
to line up withProfunctor
-
Reworked
MonadExtract
to support named holes. -
Added
reify
andresume
combinators, which are used for inspecting the current proof state during tactic execution.
-
- 0.3.0.0
- Reworked the core types of the library, which fixed a lot of the weird behavior that users were experiencing.
- 0.2.0.0
- Added Alternative/MonadPlus instances to ProofStateT, TacticT, RuleT
- 0.1.0.0
- Initial Release of the library