Elixir (プログラミング言語)

出典: フリー百科事典『ウィキペディア(Wikipedia)』

出典: フリー百科事典『ウィキペディア(Wikipedia)』
検索に移動
Elixir
Elixir
Elixirのロゴ
パラダイム 関数型プログラミング Edit this on Wikidata
登場時期 2012年(9年前) (2012
開発者 José Valim Edit this on Wikidata
最新リリース 1.11.4/ 2021年3月16日(5日前) (2021-03-16[1]
型付け 強い動的型付け
影響を受けた言語 ErlangRubyClojure Edit this on Wikidata
プラットフォーム クロスプラットフォーム Edit this on Wikidata
ライセンス Apache-2.0 Edit this on Wikidata
ウェブサイト elixir-lang.org ウィキデータを編集
拡張子 ex、exs Edit this on Wikidata
テンプレートを表示

Elixir (エリクサー) は並行処理の機能や関数型といった特徴を持つ、Erlang仮想マシン (BEAM) 上で動作するコンピュータプログラミング言語である。ElixirはErlangで実装されているため、分散システム、耐障害性、ソフトリアルタイムシステム等の機能を使用することができるが、拡張機能として、マクロを使ったメタプログラミング、そしてポリモーフィズムなどのプログラミング・パラダイムもプロトコルを介して実装されている。[2]

歴史[編集]

高い拡張性があり、Erlangの仮想環境上で動作するシステムを目標に、José Valimによって開発された。 [3]

特徴[編集]

[編集]

以下のサンプルはiexシェルまたはファイルに保存した上で elixir <filename> コマンドにて実行可能である。

Hello world
iex> IO.puts "Hello World!"
Hello World!
内包表記
iex> for n <- [1,2,3,4,5], rem(n,2) == 1, do: n*n
[1, 9, 25]
パターンマッチング
iex> [1, a] = [1, 2]
iex> a
2

iex> {:ok, [hello: a]} = {:ok, [hello: "world"]}
iex> a
"world"
モジュール
defmodule Fun do
  def fib(0), do: 0
  def fib(1), do: 1
  def fib(n) do 
    fib(n-2) + fib(n-1)  
  end
end
1000個のプロセスを順番に立ち上げ
for num <- 1..1000, do: spawn fn -> IO.puts "#{num * 2}" end
非同期実行
task = Task.async fn -> perform_complex_action() end
other_time_consuming_action()
Task.await task

参考文献[編集]

  1. ^ Releases”. GitHub. 2021年3月21日閲覧。
  2. ^ Elixir”. José Valim. 2013年2月17日閲覧。
  3. ^ Elixir - A modern approach to programming for the Erlang VM”. 2013年2月17日閲覧。
  • Dave Thomas:「プログラミングElixir」、オーム社、ISBN 978-4-274-21915-3(2016年8月19日)。
  • Dave Thomas:「プログラミングElixir」(第2版)、オーム社、ISBN 978-4-274-22637-3(2020年12月)。