5.2.0 (2023-10-31)
5.1.0 (2023-09-23)
5.0.2 (2023-08-22)
This is a minor update that uses the new infix operators introduced in bwd 2.2.0 internally. No APIs were changed.
5.0.1 (2023-05-25)
This version involves breaking changes to the API. Note: please skip the bad version 5.0.0.
- Language: add the abbreviation
id = seq []
(#106) (12ffa87) - Scope: added
import_singleton
(#105) (c12f9c5) - Scope: many operations now take optional modifiers (#108) (8c1ded9)
All breaking changes come with type changes. That is, if OCaml is still happy with your code that worked with 4.0.0, your code will work with 5.0.0.
-
Scope.Make
is taking only one module with the type parameters, not also a module implementingModifier.S
. That is, you should change the codemodule Modifier = Yuujinchou.Modifier.Make(Param) module Scope = Yuujinchou.Scope.Make(Param)(Modifier)
to just the following line
module Scope = Yuujinchou.Scope.Make(Param)
-
Scope.S.modify
is removed; instead, many operations now take optional modifiers (#108) (8c1ded9) -
If you have been passing contexts to operations in
Scope.S
, the labels for optional context arguments might have been adjusted for uniformity. Previously, some context arguments were namedcontext
, but now they are uniformly named asconetext_visible
,context_export
, orcontext_modifier
depending on their usage.
4.0.0 (2022-12-16)
- register printers for yuujinchou effects (#102) (3b89480)
- Scope: parametrize
Scope.Make
by a modifier (#98) (4a2f3ef) - Trie: add
Trie.untag
(4671c83) - Trie: add type alias
untagged
(031ac7a)
- break the functor
Run
intoRun
andTryWith
(#97) (3ac136c) - use labelled arguments instead of functors (#99) (256b5e7)
3.1.0 (2022-07-11)
- Use modules instead of records to pass effect handlers (#94)
3.0.0 (2022-06-03)
Version 3.0.0 is a complete redesign and rewrite of the library, with the following notable changes:
- Algebraic effects are used everywhere.
- A new module
Scope
was introduced for lexical scoping. - Tries were augmented with tags to support constant-time retagging.
- Renaming now shadows conflicting names in the target subtree instead of merging with them. See
Language.renaming
. - There is a design document under
docs/
.
The old client code that works with yuujinchou 2.0.0 will stop working with the new version.
2.0.0 (2022-03-07)
- action: run and run_with_hooks now take a monadic merger
- trie: drop all *_endo functions and physical equality requirements