昨日はインタラクティブな環境iexを立ち上げてみたり、ファイルに書いたElixirのHello Worldを動かした。
まだ大してElixirの魅力とか特徴がつかめていない。
今日は、適当にデータ型をいくつか触ってみたり、昨日は触らなかったコンパイルを試してみる。
データ型
iexで少し遊んでみる。
iexの終了はCtrl-Cでabortを選べばいいみたい。
リスト
リストには何でも入る
[1, "abc", 3.14, false]
リストは内部的には、連結リストになっている。lispのconsセルと同じだ。
なので先頭に要素追加は速く、末尾への追加は遅いということらしい。
[0] ++ [1, 2, 3]
は早いけど、
[1, 2, 3] ++ [4]
は遅い。
以下のような、指定したインデックスのオブジェクトも遅くなるそうだ。
Enum.at(["a", "b", "c", "d"], 1)
みたいな書き方をする。
タプル
リストは連結リスト構造なのに対してタプルは配列という理解でよさそう。
tp = {1,2,3}
配列なので
tp[0]
でインデックスアクセスができそうだがそれはできない。
一般的な言語のインデックスアクセスに相当するのは
elem(tp,0)
のようなコードになる。
何をするにも関数を使う必要がある。関数プログラミングらしさを感じてきた。