Serialization 支持和类型的高性能对象序列化库

Serialization 支持和类型的高性能对象序列化库,serialization,types,protocol-buffers,thrift,msgpack,Serialization,Types,Protocol Buffers,Thrift,Msgpack,我想知道是否有任何高性能序列化库(如Google协议缓冲区)支持 Sum类型是带标签的并集,基本上可以说是A、B或C。Sum类型用于支持的Haskell和ML等语言中,如果“like Google protocol buffers”是指为多种语言生成代码的能力,那么可能不存在这种能力。在不支持求和类型的语言中模拟求和类型充其量也不方便(例如,尝试在boost:variant上进行模式匹配)。所以,如果主要目标是主流语言,那么将它们排除在外是有意义的 如果您满足于只使用haskell/ocaml/

我想知道是否有任何高性能序列化库(如Google协议缓冲区)支持

Sum类型是带标签的并集,基本上可以说是A、B或C。Sum类型用于支持

的Haskell和ML等语言中,如果“like Google protocol buffers”是指为多种语言生成代码的能力,那么可能不存在这种能力。在不支持求和类型的语言中模拟求和类型充其量也不方便(例如,尝试在boost:variant上进行模式匹配)。所以,如果主要目标是主流语言,那么将它们排除在外是有意义的


如果您满足于只使用haskell/ocaml/任何东西,那么有很多选择。对哈斯克尔来说,有,可能还有其他人。对于ocaml,没有任何实用的系统支持总和类型,除了(我是作者)之外。Piqi与协议缓冲区兼容,本机支持OCaml和Erlang。协议缓冲区中缺少和类型是我创建它的原因之一

我的计划是扩展Piqi以支持其他语言,如Haskell、Clojure等。

是否需要“高性能”格式?许多通用格式应该能够简单地使用现有的结构——特别是映射/哈希表来支持联合(只包括带有指示实际值类型的键的条目)。
所以,也许您可以使用简单的约定来使用JSON来传输此类内容。

您不需要模式匹配,只需要标记的联合。另一个例子是protobuf,它有3个可选字段,其中有一个约束,一次只能设置其中一个字段。我主要是寻找跨平台,支持一些主流语言,如C++、java或Python。我认为没有模式匹配的和类型是不实用的。可选字段的使用是脆弱的,因为通常不可能强制执行该约束。您可以连接消息,在连接过程中约束可能会被破坏