2017-09-12 8 views
0

私はこのデザイン決定の背後にある根拠について尋ねていると思います。Reason配列が変更可能なのはなぜですか?

変更可能な理由配列は、他のデータ構造(リスト、レコード、ハッシュマップ、セット)の中で、デフォルトでは不変です。

これには理由がありますか?不変の代替手段はありますか?

答えて

2

本当に「理由アレイ」はありません。 ReasonはOCamlの代替構文であり、OCamlには可変配列があります。しかし、Reasonは通常、JavaScriptにコンパイルするBUckleScriptバックエンドでも使用されます。これには可変配列もありますが、その理由は少し異なります。

  • OCamlで適切では、配列は、あなたが一般的にそのパフォーマンスプロファイルのために、配列の特性をしたいときに使用されているが、あなたはまた、非常に簡単と相互作用しやすいそのメモリレイアウトのためにそれを使用することもできます共有アドレス空間のアクセスと突然変異によってハードウェアと通信できるようにするためにも必要です。

  • BuckleScriptでは、配列はJavaScript配列に直接マップされます。これは、可変であることに加えて、動的にサイズが決定され、効果的に配列リストになります。ここでも、JavaScriptを使用したパフォーマンスと相互運用性のために通常は使用しますが、実装がわずかに異なるため、パフォーマンスの特性も微妙に異なります。どちらの場合も

、あなたが何か配列に似たが、不変にしたい場合などImmutable.re's Vectorとして、あなたは通常、リストを使用すると思いますが、他のオプションも同様にあります。

なぜOCamlに標準ライブラリに不変配列データ型も含まれていないのはなぜですか?誰かがそれに明確な答えを与えることができるのかどうかはわかりませんが、リストが不変な配列のようなものを十分にうまく処理しているからかもしれません。

+0

ありがとうございました。 OCamlに標準ライブラリの不変配列データ型が含まれていないのはなぜですか? – balajeerc

関連する問題