Qiitaのこちらの記事を読みました。
Elmで定義されているデータ型とその内部実装について、解説がなされています。
以下、読みながらのメモとなります。
直和型
基礎知識としまして、Elmにおいて直和型は以下の様にctorフィールドを持つObjectとして表現されます。
ヤバイ。直和型もctorも初めて聞いた。分からない…。
調べた↓
”enumとC言語の構造体の、両方の性質を持ってるもの”といった具合。なるほど。
ちなみに、ctorはコンストラクタのことみたいです。ググったらすぐヒットしました。
elmでは、直和型を以下のように表現します。
gist28836583ef6a41148673e7d2fbbae3e6
なるほど。。たしかに、構造体の列挙だ。
コンパイル後のJavaScriptは以下のようになります。
gistf212045b2cf97cb90def93156f079c3f
分かりやすい!コンストラクタとメンバ変数?が定義されるわけですね。
コンテナ
コンテナという概念があるようですね。
コンテナは以下のデータ構造を含みます。
List
List。Elm-Architectureのチュートリアルでも登場しましたね。
もちろんListはHaskellと同様に1方向のLinked-Listとして実装されています
javascriptでの表現は以下の様になります。
コード例すごい。要素が1つ増えるごとにネストが深くなっていくんですね。再帰的です。
Array
Listではランダムアクセスに最悪O(n)時間掛ってしまいますので、ランダムアクセスを多用する時はArrayを使用しましょう。
なるほど。
他にも、DictやらSetやらがありますが、割愛します。
おかげさまで、Elmに対する理解が少し深まりました。