Changelog for refinery-0.4.0.0
Changelog for refinery
- 0.4.0.0
-
How failure is handled has been refined somewhat. Previously, if a tactic failed, then the extraction process was terminated, and
proofswould return aLeftdescribing the error. This design worked, but led to some suboptimal error reporting. To fix this, theFailureconstructor fromProofStateThas been changed from| Failure errto
| 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
partialProofsandrunPartialTacticT. -
A bunch of helpful combinators have been added for extract manipulation inside of tactics.
-
proofsno 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 theMonadErrorinstance 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
mapExtractto line up withProfunctor -
Reworked
MonadExtractto support named holes. -
Added
reifyandresumecombinators, 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