最近、Elixirが気になっているので、Elixirのインストールと「Hello, World!」を表示するスクリプトを書いてみました。
Elixirをインストールする
まず、Elixirを利用するための環境を整備したいと思います。
Elixirのインストールは、公式サイトに記載されています。
https://elixir-lang.org/install.html
私は、Macを利用しているので、 brew
コマンドで簡単にインストールすることができます。
$ brew install elixir
「Hello, World!」を実行してみる
とりあえず、「Hello, World!」を実行してみます。
iex
コマンドを利用すると、インタラクティブにコードを実行することができます。
% iex
Erlang/OTP 21 [erts-10.1.3] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe] [dtrace]
Interactive Elixir (1.7.4) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> IO.puts "Hello, World!"
Hello, World!
:ok
せっかくなので、新規に helloworld.ex
というファイルを作成し、コンパイルして実行してみます。
ちなみに、私は開発にVisual Studio Code(以下、VS Code)を利用しているので、 vscode-elixir
というプラグインを使っています。シンタックスハイライトなども行ってくれるので、とても便利です。
https://marketplace.visualstudio.com/items?itemName=mjmcloug.vscode-elixir
defmodule Helloworld do
def helloworld do
IO.puts "Hello, World!"
end
end
Helloworld.helloworld
コンパイル方法は、下記の通りです。
% elixirc helloworld.ex
Hello, World!
コンパイルの実行が終わると、 Elixir.Helloworld.beam
というファイルが生成されます。
% ls
Elixir.Helloworld.beam helloworld.ex
コンパイルされたファイルを実行するには、 elixir -e
コマンドを実行します。
% elixir -e Helloworld.helloworld
Hello, World!
ソートプラグラムを作ってみる
「Hello, World!」だけではつまらないので、ソートプラグラムを作ってみたいと思います。
作るとは言っても、既に Enum.sort
というメソッドが用意されているので、そのメソッドを利用してみたいと思います。
Enum.sortのドキュメントは下記URLを参照ください。
https://hexdocs.pm/elixir/Enum.html#sort/2
数値配列を降順ソートする実行結果は下記の通りとなります。
とても簡単です。
iex(1)> list = [1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
iex(2)> Enum.sort(list, &(&1 >= &2))
[5, 4, 3, 2, 1]
また、文字列配列をバイト数が大きい順に並べるには、下記コマンドを実行します。
iex(1)> list = ["a", "ab", "abc", "abcd", "abcde"]
["a", "ab", "abc", "abcd", "abcde"]
iex(2)> Enum.sort(list, &(byte_size(&1) > byte_size(&2)))
["abcde", "abcd", "abc", "ab", "a"]
とても便利。以上です。