プログラミングElixir読書メモ
今日買いに行ってきた。
関数型言語は一種類くらい、何となく使えるレベルで理解しておきたいと思っていたものの、手を付けられないまま時間が経っていた。
そんなところに、今月Elixirの良書が翻訳されたと話題になっていたので、これに乗じて読んでみようと思った次第。
そして、Elixirは仕事ですぐに使えたりはしないと思うので、アウトプットとして読書メモだけでも書いておこうと決めて、これを書いている。
以下、章ごとのメモ (逐次更新できればいいな)
第1章 赤いカプセルをとれ
イントロダクションの章。
インストール方法
Ubuntu16.04LTSにインストールした。
wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb && sudo dpkg -i erlang-solutions_1.0_all.deb sudo apt update sudo apt install esl-erlang elixir
実行
iexの使用例が載っている。インストールが完了できているので、そのまま実行できた。
iexのヘルパー関数の解説。便利そう。
カスタマイズもできるみたいだけど、今のところは手を付けず。
コンパイルと実行
Elixirのコードファイルは拡張子の2種類ある。
コンパイルして実行するものは.ex, ソースレベルで解釈・実行するものは.exs。
具体的な使い分けとしては、アプリケーションコードは.exとし、テストコードは.exsを使うらしい。
(テストのコンパイル済みコードを置いておく必要はないため)
ここでHelloWorldするので、超簡単にコーディング環境を作った。
パッケージ検索すると、色々便利なのがありそうなので、探ると楽しそう。
サンプルのhelloworld.exsを作って、
elixirコマンドでも、iex内からでも実行できることを確認した。
Think Different(ly)
プログラミングについての考え方を変えるとのこと。
第2章 パターンマッチ
「あなたの考える代入は、私の考える代入ではない」
Elixirにおける等号はマッチ演算子であって、いわゆる「代入」じゃない。
左辺と右辺が同じものであるという「表明」のようなもの。
マッチ演算子(=)
マッチ演算子によってパターンマッチを行い、マッチすれば表明が成功し、
マッチしなければ表明できずエラーになる。
同じ構造をもっていれば、= で結ぶとパターンマッチにより両辺を同じにできる。
変数に値がセットされたら、そのパターンマッチ中では変更不可能。
次のパターンマッチでは変更OK。例としては以下の様な感じ。
a = 1 # OK
1 = a # OK
2 = a # エラー
a = 2 # OK
アンダースコア(_)
アンダースコア(_)はパターンマッチの中のワイルドカード。
変数として値を補足しなくていいなら、これを使うと良い。
[1, _, _] = [1, 2, 3] # OK
ピン演算子(^)
Elixirでは変数の束縛の期限が短くて、次のマッチのときには新しい値に束縛し直せる(Erlangではできないみたい)。
現在の変数の値でパターンマッチをしたい場合には、ピン演算子(^)を使う。
a = 1 # OK
a = 2 # OK
^a = 1 # エラー!