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

 

ぼちぼち追記していきます。