CHANGES 1.96 KB
Newer Older
POTTIER Francois's avatar
POTTIER Francois committed
1 2 3 4 5
2017/03/15:
New attributes [@name] and [@@name] can be attached to types, type declarations,
and data constructors, so as to alter the names of the generated methods. See
the documentation for details. (This feature was suggested by Reuben Rowe.)

POTTIER Francois's avatar
POTTIER Francois committed
6
2017/03/08:
7 8 9 10 11
A new option [polymorphic = true] allows generating visitor methods with
polymorphic types. With [polymorphic = true], a type variable ['a] is
handled by a visitor *function* [visit_'a], which is passed as an argument
to every visitor method; whereas, with [polymorphic = false], a type
variable ['a] is handled by a virtual visitor *method* [visit_'a].
POTTIER Francois's avatar
POTTIER Francois committed
12
With [polymorphic = true], visitor classes compose better,
POTTIER Francois's avatar
POTTIER Francois committed
13
and irregular algebraic data types are supported.
14
See the documentation for more details.
POTTIER Francois's avatar
POTTIER Francois committed
15
(This feature was suggested by Reuben Rowe.)
16

POTTIER Francois's avatar
POTTIER Francois committed
17 18 19 20 21
2017/03/03:
A new option [data = false] allows suppressing the generation of visitor
methods for data constructors. This makes the generated visitor slightly
simpler and faster, but less customizable.

22 23 24
A new option [nude = true] allows *not* implicitly inheriting the class
VisitorsRuntime.<variety>.

25
2017/02/15:
POTTIER Francois's avatar
POTTIER Francois committed
26
Makefile.preprocess is now installed with the package, so users can rely on it
27
without needing to copy it. See the documentation for instructions.
28

POTTIER Francois's avatar
POTTIER Francois committed
29
2017/02/13:
POTTIER Francois's avatar
POTTIER Francois committed
30 31 32 33
Added a new variety of visitors, "mapreduce". This visitor computes a pair of a
data structure (like a "map" visitor) and a summary (like a "reduce" visitor).
This can be used to annotate every tree node with information about the
subtree that lies below it. See the documentation for an example.
POTTIER Francois's avatar
POTTIER Francois committed
34

35
2017/02/09:
POTTIER Francois's avatar
POTTIER Francois committed
36
Documentation: added a new subsection on OCaml objects,
37 38 39 40
entitled "Where the expressiveness of OCaml's type system falls short".
This section explains why "map" cannot be a subclass of "fold",
even though it should be.

41 42 43 44
2017/01/31:
Documentation: added an example of constructing a lexicographic ordering.
Documentation: discussed generating visitors for existing types and ppx_import.

POTTIER Francois's avatar
POTTIER Francois committed
45 46
2017/01/26:
Initial release.