OCaml序列化与类型

时间:2014-11-25 02:54:14

标签: ocaml

是否有任何OCaml库可以将我的数据与类型信息一起序列化?例如:serialize [1;2;3]可能会给我<int list: (1,2,3)>或类似的内容吗?

我想用数据存储类型信息。可能吗? 我试着看看Sexplib,但我不知道他们是否支持这个。

谢谢!

2 个答案:

答案 0 :(得分:2)

我认为sexplib或bin_prot是目前最好的选择。 Sexplib不会将类型名称附加到数据中,我猜bin_prot也没有,但读者方面确保了类型安全。

如果你真的想要&#34;输入信息&#34;附加到序列化数据,您可以使用ppx_deriving编写自己的序列化程序。它比使用sexplib,bin_prot和meta_conv等基于CamlP4的序列化程序更新,但要容易得多。

答案 1 :(得分:2)

如果你需要的只是存储类型名,那么你可以使用typerep库来检索它们,然后调整sexp转换器来处理这些信息。

另一种选择是将数据实际存储为有效的OCaml字符串,并使用编译器库加载它,即实际解析和评估。在这种情况下,您可以存储您想要的类型或任何内容。您可能会发现odn库对于将数据转储为OCaml非常有用。