Dans les versions récentes de la bibliothèque principale de Janestreet, toutes les extensions de syntaxe ont été converties des extensions camlp4 en extensions ppx. Par conséquent, vous devez malheureusement adapter la syntaxe de tous les exemples en utilisant des extensions de syntaxe dans Real World OCaml.
Heureusement, contrairement aux extensions camlp4, les extensions ppx ne peuvent pas modifier de manière folle la syntaxe OCaml. Tout au plus, ils peuvent utiliser une syntaxe légèrement étendue par rapport à OCaml vanille, qui ajoute des nœuds d'extension et des attributs.
En particulier, cela signifie que, puisque field:type with …
n'est pas synctatiquement valide pour OCaml vanille, il ne s'agit pas non plus d'une syntaxe valide avec l'extension ppx_sexp_conv
activée. Dans votre cas, l'annotation valeur par défaut doit être écrit comme un attribut des champs correspondants:
type http_server_config = {
web_root: string;
port: int [@default 80];
addr: string [@default "localhost"];
} [@@deriving sexp] ;;
Notez que pour travailler en utop vous devez d'abord avoir exigé l'extension ppx_sexp_conv
et ouvert par défaut module d'exécution:
#require "ppx_sexp_conv";;
open Sexplib.Std ;;
type http_server_config = {
web_root: string;
port: int [@default 80];
addr: string [@default "localhost"];
} [@@deriving sexp] ;;
Ceci n'est pas standard [ocaml] (http://caml.inria.fr/pub/docs/manual-ocaml/). Il y a un pré-traitement supplémentaire impliqué. 'default' n'est pas un mot-clé Ocaml. –