8

高性能シリアル化ライブラリ(Googleプロトコルバッファなど)のいずれかが合計タイプをサポートしているかどうか疑問に思います。

合計型はタグ付き共用体であり、基本的にはA、B、またはCのいずれかであると言うことができます。合計型は、代数的データ型をサポートするHaskellやMLなどの言語で使用されます。

4

3 に答える 3

2

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

haskell / ocaml /何でも使用することに満足している場合は、選択肢がたくさんあります。haskellには、シリアルバイナリセーフコピーなどがあります。ocaml用のpiqiプロジェクトがあります。

于 2012-02-21T17:38:34.117 に答える
2

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

私の計画は、Piqiを拡張して、Haskell、Clojureなどの他の言語をサポートすることです。

于 2012-02-21T18:12:20.067 に答える
0

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

于 2012-02-27T06:14:58.963 に答える