generated at
Elixir

開発者はJosé Valim




nixで触る
$ nix-shell -p elixir
確認
$ elixir --version $ mix --version


学ぶ
学習系まとめサイト

Haskellのghciみたいなやつ
> h hoge で関数 hoge の説明が見れる
> i 123 で値についての情報を表示する
> c "hoge.exs" でファイルを読み込む
もしくは $ iex hoge.exs で読み込んで起動
$ iex -S mix
コンパイルしてプロジェクトをiexで起動


実行
コンパイルせずに実行
$ elixir hoge.exs
コンパイルして実行
$ elixirc hoge.ex

プロジェクト作成
$ mix new hogehoge
テスト実行
$ mix test
『プログラミングElixir』 13章


Elixirのbuild tool

パッケージマネージャ
jsのnpmみたいなもの
『プログラミングElixir』 p.138に書いている
mix.exs のdepsに使いたいライブラリを追記する
$ mix deps で確認
$ mix deps.get でダウンロード


Elixirのパターンマッチ



コアに近いところの話

疑問
@default_count 4 ってなに
↓これの x はなんで :x ではないのか
見分け方
ex
fb = fn 0, 0, _ -> "FizzBuzz" 0, _, _ -> "Fizz" _, 0, _ -> "Buzz" _, _, x -> x end


以下の |> で繋がれた関数はシェルの | のように並列に実行される
ex
defmodule Parallel do def pmap(collection, func) do collection |> Enum.map(&(Task.async(fn -> func. (&1) end))) |> Enum.map(&Task.await/1) end end
パターンマッチで条件分岐することで、パイプラインでもきれいに書ける

特徴
Erlang VM上で動作する
並列分散、高可用性
動的型付け
Rubyライクな文法
マクロでメタプログラミング
プロトコル

拡張子
2種類あり、以下のような慣習がある
.ex
コンパイルすファイル
.exs
コンパイルせずに実行するファイル
s は「script」のs

Elixirのドキュメンタリー


Protocol