Sexplib の構文拡張により、任意のユーザー定義データ構造のシリアライズとデシリアライズが OCaml で簡単になります。これは通常with sexp
、型定義の最後に注釈を追加することによって行われます。
type a = A of int | B of float with sexp
これは、ファンクターベースの型に直接一般化されているようには見えません。また、Sexplib 標準型コンバーターが標準ファンクターでさえどのようにキャプチャできるかについても明らかではありません。
int Map.Make(String).t
これまでのところ、シリアル化の前に特定の Map 型のインスタンス (例: ) をリストにフラット化することでこの問題を回避してきました。また、[Bat]Map などの主要なモジュールへのカスタム sexp シリアライゼーションに古いバージョンの Batteries が混在していることにも気付きましたが、これはしばらくの間削除されています。
マップやその他の複雑なファンクター型は、Sexplib シリアライゼーションで一般的にどのように使用されますか?