Elixir
https://gyazo.com/89fd1ccf1881bb30e2f5fc675323d827
nixで触る
$ nix-shell -p elixir
code:確認
$ 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』.icon 13章
Elixirのbuild tool
パッケージマネージャ
jsのnpmみたいなもの
『プログラミングElixir』.icon p.138に書いている
mix.exsのdepsに使いたいライブラリを追記する
$ mix depsで確認
$ mix deps.getでダウンロード
Elixirのパターンマッチ
コアに近いところの話
疑問
@default_count 4ってなに
↓これのxはなんで:xではないのか
見分け方
code:ex
fb = fn
0, 0, _ -> "FizzBuzz"
0, _, _ -> "Fizz"
_, 0, _ -> "Buzz"
_, _, x -> x
end
以下の|>で繋がれた関数はシェルの|のように並列に実行される
code: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
パターンマッチで条件分岐することで、パイプラインでもきれいに書ける
特徴
並列分散、高可用性
動的型付け
Rubyライクな文法
マクロでメタプログラミング
プロトコル
拡張子
2種類あり、以下のような慣習がある
.ex
コンパイルすファイル
.exs
コンパイルせずに実行するファイル
sは「script」のs
https://www.youtube.com/watch?v=lxYFOM3UJzo
Elixirのドキュメンタリー
Protocol