【发布时间】:2014-11-25 02:54:13
【问题描述】:
是否有任何 OCaml 库可以将我的数据与类型信息一起序列化?例如:serialize [1;2;3] 可以给我<int list: (1,2,3)> 或类似的?
我想将类型信息与数据一起存储。是否可以? 我尝试查看 Sexplib,但我不知道他们是否支持这一点。
谢谢!
【问题讨论】:
标签: ocaml
是否有任何 OCaml 库可以将我的数据与类型信息一起序列化?例如:serialize [1;2;3] 可以给我<int list: (1,2,3)> 或类似的?
我想将类型信息与数据一起存储。是否可以? 我尝试查看 Sexplib,但我不知道他们是否支持这一点。
谢谢!
【问题讨论】:
标签: ocaml
如果您只需要存储类型名,那么您可以使用typerep 库来检索它们,然后调整sexp 转换器来处理这些信息。
另一种选择是将数据实际存储为有效的 OCaml 字符串,并使用编译器库加载它,即实际解析和评估。在这种情况下,您可以存储类型或任何您想要的。您可能会发现 odn 库对于将数据转储为 OCaml 很有用。
【讨论】:
我认为 sexplib 或 bin_prot 是当前最好的选择。 Sexplib 不会将类型名称附加到数据中,我猜 bin_prot 也不会,但在阅读器方面保证了类型安全。
如果您真的想要将“类型信息”附加到序列化数据,您可以使用 ppx_deriving 编写自己的序列化程序。它比编写基于 CamlP4 的序列化程序(如 sexplib、bin_prot 和 meta_conv)要容易得多。
【讨论】: