Elixir:エリクサー ~マルチコアプロセッサを有効利用するのに適した関数型言語(プログラミング言語を知る企画)
プログラミング言語、Elixir(エリクサー)の特徴をまとめます。
この記事は以下の企画を元に作成しています。
特徴
Elixirは、マルチコアプロセッサを効率的に使うための並列処理を簡単に実装できるという特徴がある。
CPUのコア数が増えるほど力を発揮する。
資源を節約し、高速に応答するプログラムを実装できるようになることが一番の強みです。
パターンマッチ
「=」は「代入」ではなく、「パターンマッチ」や「表明」と呼ぶ。
「右辺と左辺が同じになるようにする」という意味を持つ。
Cやそれに似た言語を触ってきた者としては、なんとも戸惑う設定である。
代入でいいじゃん…と思ってしまうのは私だけ?
コード例:nの階乗
nの階乗を求めるプログラムは以下のように定義できる。
factorial.exs
defmodule Factorial do
def of(0), do: 1
def of(n), do: n * of(n-1)
end
モジュール内のof()関数の引数に上から順番にパターンマッチしたものを実行していくというスタイル。これで再帰処理になる。
of()の引数が0になったら再帰呼び出しが無くなり、処理は終了する。
コードがとてもシンプルですね。
実行は以下のようにする。
iex(1)> c "factorial.exs"
[Factorial]
iex(2)> Factorial.of(0)
1
iex(3)> Factorial.of(4)
24
iex(4)> Factorial.of(10)
3628800
ぼちぼち追記していきます。