Elixir
https://gyazo.com/89fd1ccf1881bb30e2f5fc675323d827
開発者はJosé Valim
Elixirの型
docs
nixで触る
$ nix-shell -p elixir
code:確認
$ elixir --version
$ mix --version
学ぶ
site
学習系まとめサイト
Elixir入門 01: コードを書いて試してみる - DEV Community 👩‍💻👨‍💻
Elixirだ 第1回 - 基礎だ -
Elixir 基礎文法最速マスター - Qiita
https://elixirschool.com/ja/lessons/basics/basics/
iex
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章
Mix · Elixir School
Mix
Elixirのbuild tool
Hex
https://hex.pm/
パッケージマネージャ
jsのnpmみたいなもの
『プログラミングElixir』.icon p.138に書いている
mix.exsのdepsに使いたいライブラリを追記する
$ mix depsで確認
$ mix deps.getでダウンロード
Elixirのパターンマッチ
^: ピン演算子
Elixirの関数
https://speakerdeck.com/ohr486/hacking-elixir-how-to
コアに近いところの話
疑問
@default_count 4ってなに
↓これのxはなんで:xではないのか
見分け方
code:ex
fb = fn
0, 0, _ -> "FizzBuzz"
0, _, _ -> "Fizz"
_, 0, _ -> "Buzz"
_, _, x -> x
end
以下の|>で繋がれた関数はシェルの|のように並列に実行される
pipeline operator
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
https://sanposhiho.com/posts/2020-03-30-qiita-a66538451c145af73d5a/
パターンマッチで条件分岐することで、パイプラインでもきれいに書ける
特徴
Erlang VM上で動作する
並列分散、高可用性
動的型付け
Rubyライクな文法
マクロでメタプログラミング
プロトコル
拡張子
2種類あり、以下のような慣習がある
.ex
コンパイルすファイル
.exs
コンパイルせずに実行するファイル
sは「script」のs
https://www.youtube.com/watch?v=lxYFOM3UJzo
Elixirのドキュメンタリー
Protocol
https://qiita.com/tbpgr/items/132a4b9400fdaa5cebce
polymorphismの話
https://twitter.com/piacere_ex/status/1186644665744986113
https://employment.en-japan.com/engineerhub/entry/2019/08/01/103000
Elixir/Erlangを使っている企業
/alchemists
#プログラミング言語