La extensión de sintaxis de Sexplib facilita la serialización y la deserialización de estructuras de datos arbitrarias definidas por el usuario en OCaml. Por lo general, se realiza mediante la adición de una anotación de with sexp
al final de una definición de tipo:¿Cómo se puede usar sexplib con tipos de funtores como Map?
type a = A of int | B of float with sexp
Esto no parece generalizar directamente a los tipos basados en los funtores, ni tampoco está claro cómo el tipo estándar de los convertidores Sexplib pueden capturar incluso los funtores estándar.
Hasta ahora he solucionado esto al acoplar una instancia de tipo de mapa específica (por ejemplo int Map.Make(String).t
) a una lista antes de la serialización, y viceversa, pero seguramente esto no ha sido pasado por alto por los autores generalmente ambiciosos de Sexplib/Jane Street Core. También noté que versiones anteriores de de Batteries se mezclan en serialización de sexp personalizado con sus módulos principales como [Bat] Map, pero que esto ha sido eliminado por algún tiempo.
¿Cómo se usan comúnmente los mapas u otros tipos de funcionamientos complejos con la serialización de Sexplib?
Creo que usaría una biblioteca estándar extendida con funciones de conversión sexplib generalizadas para eso. ¿Has mirado 'Core'? Solo pasé 5 minutos con él, pero en estos 5 minutos apliqué el functor 'Set.Make' y me pidió las funciones de conversión sexplib en el tipo de argumento para que pudiera construir funciones de conversión sexplib para el tipo de conjunto resultante. –