Pregunta

Me pregunto si alguna de las bibliotecas de serialización de alto rendimiento (como Google Protocol Buffers) admite tipos de suma.

Los tipos de suma son sindicatos etiquetados, básicamente la capacidad de decir que algo es A, B o C. Los tipos de suma se utilizan en idiomas como Haskell y ML que admiten Tipos de datos algebraicos

¿Fue útil?

Solución

Si por "como Google Protocol Buffers" se refiere a la capacidad de generar código para varios idiomas, entonces probablemente tal cosa no exista. Emular los tipos de suma en los idiomas que no los admiten es incómodo en el mejor de los casos (intente que coincida con la combinación en Boost: Variante, por ejemplo). Por lo tanto, tiene sentido dejarlos fuera si el objetivo principal es la corriente principal.

Si está contento con usar solo Haskell/Ocaml/lo que sea que haya muchas opciones. Para Haskell hay cereal, binario, safeCopy y probablemente otros. Hay proyecto piqi para ocaml.

Otros consejos

No conozco ningún sistema práctico que admita tipos de suma que no sean Piqi (Soy el autor). PIQI es compatible con tampones de protocolo y es compatible con OCAML y Erlang. La ausencia de tipos de suma en los amortiguadores de protocolo fue una de las razones por las que lo creé.

Mi plan es expandir Piqi para apoyar otros idiomas como Haskell, Clojure, etc.

¿Hay necesidad de un formato de "alto rendimiento"? Muchos formatos de propósito general deberían poder simplemente usar construcciones existentes, específicamente, mapas/hashtables, para admitir los sindicatos (solo incluya la entrada con clave que indique el tipo de valor real). Entonces, tal vez podría usar una convención simple para usar, por ejemplo, JSON, para transferir dicho contenido.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top