Page
Library
Module
Module type
Parameter
Class
Class type
Source
[@@deriving sexp]
record-field attribute, [@sexp.omit_nil]
, for a field that is omitted if its sexp representation is ()
.[%sexp_of: 'a]
and [%of_sexp: 'a]
to not expose variable names intended for internal use.type 't t = ...
ppx_sexp_conv
, and breaking up the documentation between sexplib and ppx_sexp_conv
. Also changed the formatting to use org-mode, so it will render properly on github. Markdown doesn't render well by default, unless you use quite different conventions about linebeaks.Type_conv
and Ppx_core
evolution.Make ppx_sexp_conv correctly handle aliases to polymorphic variants:
type t =
A
@@deriving sexptype u = t
@@deriving sexptype v =
u | B
@@deriving sexp
Before, v_of_sexp
would never manage to read B. This problem is now fixed if you use
sexp_polyon
uinstead of
sexp, and if you don't, you get an "unbound value __u_of_sexp__". People should use
sexp_polywhen they have a polymorphic variant type that is not syntactically a polymorphic variant, but in practice it's simpler to replace
sexpby
sexp_poly` when faced with the error above.
The need for sexp_poly
should happen only in one new case: an implementation says type u = t
@@deriving sexpbut the interface says `type u =
A
@@deriving sexp. (the old case where it was already needed is when you have an interface that says `type u = t `@@deriving sexp
and in some other implementation you try to say type t =
That_module.t | A
`@@deriving sexp``).