6

Is there a reason (performance, memory, typesystem) why a Tuple is not a HList and Function is not a mapping form a HList to some value?

4

2 に答える 2

7

パフォーマンスとメモリの両方。タプルはO(1)その要素にアクセスできます。通常作成されるように、HListはリストであるため、がありO(n)ます。nまた、タプルには、他のオブジェクトへの参照を持つ1つの追加オブジェクト用のメモリが必要ですが、 HList(リストとして)それぞれ1つのオブジェクト(およびnextポインタ)が必要です。オブジェクトのオーバーヘッドは約2つの参照であるため、これによりn+2メモリ使用量がに変わります4n+2。コア言語構造としてはそれほど素晴らしいものではありません。

于 2013-01-24T12:05:12.550 に答える
2

AnyValを拡張するHArrayには、TupleXクラスと同等のパフォーマンスとメモリ要件があります。唯一のオーバーヘッドは、配列の長さと配列のインデックス境界チェックです。

于 2013-01-24T12:25:01.257 に答える