Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Elixir Programming with Type checking

1,215 views

Published on

Elchemy の初回 in Erlang & Elixir Fest 2018 LT

Published in: Software
  • Be the first to comment

  • Be the first to like this

Elixir Programming with Type checking

  1. 1. Elixir Programming with Type Checking ===== @matsubara0507
  2. 2. 昨年... 型システムを入れるという話があった
  3. 3. しかし、まだない
  4. 4. Elchemy
  5. 5. Elchemy Elm => Elixir のトランスパイラ 2017年2月に first commit 両者のいいとこどり Elm 純粋関数型・静的型付けな AltJS Haskellに似た構文(中身はかなり違う) The Elm Architecuture の DSL
  6. 6. 例: 総和を求める関数 Elchemy です module Hello exposing (..) sum : List Int -> Int sum list = case list of first :: rest -> first + sum rest [] -> 0
  7. 7. 例: 総和を求める関数 Elixir です defmodule Hello do use Elchemy @spec sum(list(integer)) :: integer curry sum/1 def sum(list) do case list do [first | rest] -> (first + sum(rest)) [] -> 0 end end end
  8. 8. 試すには オンラインエディタがある 重いけど リアルタイムビルドされる 自前でビルド Docker Image つくりました Haskell製の CLI と TravisCI を使って自動追従
  9. 9. FAQ 既存の Elixir ライブラリは使えるか? 任意のモジュールの任意の関数を FFI できる しかし任意のマクロは扱えない 任意の Elixir コードを Elchemy コードに書ける 既存の Elm ライブラリは使えるか? Native モジュール・Port・Elm ランタイムを使 わない限りは可能
  10. 10. FAQ 型はどう表されるか 値コンストラクタはスネークケースのアトムと して,コンストラクタの引数はタプルで表す 例: MyType 42 "Forty two" Error という値は {:my_type, 42, "Forty two", :error} となる
  11. 11. ToDo アプリ作ってみた Phoenix を利用 フロントを Elm matsubara0507/elchemy_todo_app · GitLab GitLab なのはモノは試しってことです
  12. 12. 感想 うれしみ 静的検査は神 フロントとコードを共有できる つらみ Phoenix のいくつかは型付けできない ルーティングの引数 へテロリストのようなモノ コンパイルが遅い
  13. 13. 結論
  14. 14. おまけ
  15. 15. マージされた
  16. 16. おしまい

×