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

More Related Content

More from Nobutada Matsubara (20)

PDF
Haskell で作る競技型イベントの裏側
Nobutada Matsubara
 
PDF
Marp Next Theme: Colors
Nobutada Matsubara
 
PDF
Marp Next Tips !
Nobutada Matsubara
 
PDF
Haskell で CLI
Nobutada Matsubara
 
PDF
貧者のための「cron」
Nobutada Matsubara
 
PDF
MixML 作ってみる
Nobutada Matsubara
 
PDF
Elm でなんかつくる
Nobutada Matsubara
 
PDF
Haskell と Elm と JSON の話
Nobutada Matsubara
 
PDF
ADVENTAR の Bot を作る with Haskell
Nobutada Matsubara
 
PDF
Haskell Backpack 事始め
Nobutada Matsubara
 
PDF
GitHub での Haskell の色が変わったんで
Nobutada Matsubara
 
PDF
日記って続かないよね...
Nobutada Matsubara
 
PDF
「7つの言語、7つの世界」を読む
Nobutada Matsubara
 
PDF
Lisper はじめました (再)
Nobutada Matsubara
 
PDF
Haskell で LINE Bot を作ってみた
Nobutada Matsubara
 
PDF
Marp colors
Nobutada Matsubara
 
PDF
Marp Tips
Nobutada Matsubara
 
PDF
Whitespcae 入門
Nobutada Matsubara
 
PDF
入門 超絶技巧プログラミング !
Nobutada Matsubara
 
PDF
SKIコンビネーターによる処理系の作成
Nobutada Matsubara
 
Haskell で作る競技型イベントの裏側
Nobutada Matsubara
 
Marp Next Theme: Colors
Nobutada Matsubara
 
Marp Next Tips !
Nobutada Matsubara
 
Haskell で CLI
Nobutada Matsubara
 
貧者のための「cron」
Nobutada Matsubara
 
MixML 作ってみる
Nobutada Matsubara
 
Elm でなんかつくる
Nobutada Matsubara
 
Haskell と Elm と JSON の話
Nobutada Matsubara
 
ADVENTAR の Bot を作る with Haskell
Nobutada Matsubara
 
Haskell Backpack 事始め
Nobutada Matsubara
 
GitHub での Haskell の色が変わったんで
Nobutada Matsubara
 
日記って続かないよね...
Nobutada Matsubara
 
「7つの言語、7つの世界」を読む
Nobutada Matsubara
 
Lisper はじめました (再)
Nobutada Matsubara
 
Haskell で LINE Bot を作ってみた
Nobutada Matsubara
 
Marp colors
Nobutada Matsubara
 
Whitespcae 入門
Nobutada Matsubara
 
入門 超絶技巧プログラミング !
Nobutada Matsubara
 
SKIコンビネーターによる処理系の作成
Nobutada Matsubara
 

Elixir Programming with Type checking