gpt4 book ai didi

haskell - 存在的二进制实例

转载 作者:行者123 更新时间:2023-12-03 23:49:41 25 4
gpt4 key购买 nike

给定一个存在数据类型,例如:

data Foo = forall a . (Typeable a, Binary a) => Foo a

我想写 instance Binary Foo .我可以编写序列化(序列化 TypeRep 然后序列化值),但我不知道如何编写反序列化。基本问题是给定 TypeRep您需要映射回该类型的类型字典 - 我不知道是否可以这样做。

这个问题之前在 haskell 邮件列表中被问过 http://www.haskell.org/pipermail/haskell/2006-September/018522.html ,但没有给出任何答案。

最佳答案

你需要一些方法来让每个 Binary instance 可以注册自己(就像在您的 witness 版本中一样)。您可以通过将每个实例声明与导出的外部符号捆绑在一起来做到这一点,其中符号名称派生自 TypeRep .然后,当您想反序列化时,您可以从 TypeRep 获取名称并动态查找该符号(使用 dlsym() 或类似的东西)。国外导出的值可以是反序列化函数等。

这是疯狂的丑陋,但它的工作原理。

关于haskell - 存在的二进制实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8101067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com