2014-11-25 97 views
0

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

我想用数据存储类型信息。可能吗? 我试着看着Sexplib,但我无法弄清楚他们是否支持这一点。

谢谢!

回答

2

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

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

+0

谢谢! :) ODN非常有用! – 2014-11-25 04:46:44

2

我认为sexplib或bin_prot是目前最好的选择。 Sexplib不会将类型名称附加到数据上,我猜bin_prot也不会,但是在读者端保证类型安全。

如果你真的想要连接到序列化数据的“类型信息”,你可以使用ppx_deriving编写自己的序列化程序。这比编写基于CamlP4的串行器(比如sexplib,bin_prot和meta_conv)要新,但要容易得多。