2014-11-25 132 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)要新,但要容易得多。