質問

高性能シリアル化ライブラリ(Googleプロトコルバッファーなど)のいずれかがサポートされているのだろうか 合計タイプ.

合計タイプは組合にタグ付けされています。基本的には、何かがA、B、またはCのいずれかであると言う能力です。 代数データ型

役に立ちましたか?

解決

「Google Protocolバッファーのように」である場合、複数の言語のコードを生成する能力を意味する場合、おそらくそのようなものは存在しません。それらをサポートしていない言語で合計タイプをエミュレートすることは、せいぜい厄介です(たとえば、ブースト:バリアントで一致することを試みてください)。そのため、メインのターゲットが主流の言語である場合、それらを除外することは理にかなっています。

Haskell/ocamlのみを使用することに満足している場合、たくさんの選択肢があります。 Haskellにはあります 穀物, バイナリ, セーフコピー そしておそらく他の人。がある PIQIプロジェクト ocamlの場合。

他のヒント

私は以外の合計タイプをサポートする実用的なシステムを知りません Piqi (私は著者です)。 PIQIはプロトコルバッファーと互換性があり、OCAMLとErlangをネイティブにサポートしています。プロトコルバッファーに合計タイプがないことが、私がそれを作成した理由の1つでした。

私の計画は、Haskell、Clojureなどの他の言語をサポートするためにPiqiを拡大することです。

「高性能」形式が必要ですか?多くの汎用形式は、既存のコンストラクト(具体的にはマップ/ハッシュテーブル)を単純に使用して、ユニオンをサポートできる必要があります(実際の値のタイプを示すキー付きのエントリを含めるだけです)。そのため、たとえばJSONを使用してそのようなコンテンツを転送するために、簡単なコンベンションを使用するだけかもしれません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top