Haskellで真のベクタータイプを実装するにはどうすればよいですか?何かをベクターにするためには、O(1)
ランダムアクセスを使用して、メモリに順番に格納する必要があります。しかし、Haskellはそのメモリ管理を隠し、そのデータ型はツリーを記述します!では、そのような要件をどのように表現できますか?
コメント
回答
Haskellのすべてのデータ型がツリーであるとは限りません。関数やIntなどの組み込み型もあります。その中には、タイプ Array があり、その要素へのO(1)アクセスが可能です。
GHCなどの一部のコンパイラも提供しています。ボックス化されていない配列。これらはメモリの使用量が少なく、要素ごとのアクセスが高速ですが、もちろん複雑さは変わりません。
これらの配列に加えて、std::vector
。例として、ベクトルライブラリがあります。
回答
ベクターパッケージのData.Vector.Unboxed
とData.Vector.Mutable
を確認する必要があります。
std::vector
)。