generated at
Elm

Evan Czaplickiが2012年に修士論文で作ったHaskell inspiredな言語
もともとはFRPな言語だった
抽象化を犠牲にしてシンプルなコードを書くことを大事にしてる
中途半端な状態でもコンパイルエラーがなければ実行時エラーは起きない
HTML, CSS, JSを生成
デフォルトでVirtual DOM



play groundもある
ググるといろいろ出てくるが結局公式が一番新しい
Elmはバージョンが上がると結構いろいろ変わるっぽいのですぐ情報が古くなる
discord
elm-formatというのがある
サイト名の通り。
HTMLとElmに変換する



日本語版
バージョンが古い




scrapbox

elm コマンド
$ elm init
コンパイル
わからん、うまく行ったり行かなかったり
$ elm make hoge.elm
$ elm make hoge.elm --output=main.html
出力先ファイル名を決める場合
packageの導入
$ elm install elm-lang/html
repl
$ elm repl
haskellの :t みたいなことがしたい
関数や値をそのまま実行すると型注釈が得られる
elm reactor
$ elm reactor
.elm をすぐさまコンパイルしブラウザに表示してくる
いちいちトップに戻らないといけないの #??
SPAのやつにしてるからか
なんか無理っぽいな ref
debugもできるらしい ref



サーバーサイドをElmで書く
HaskellでElmコードを生成する

メモ
React, Reduxの上でElm使うことできるらしいmrsekut
ReactNatveでも使えるらしい
管理画面などのようなSEOや速度を気にしないツールを作るのが得意
なんで?


ベスプラ

Elm is wrong


パッケージの依存関係直すやつ



Debug
devtoolのconsoleに表示される
updateのmsgのところに挟むとか
elm
case Debug.log "msg" msg of




Haskellとの比較

CSS: Flexboxみたいなやつ

CSS

extensible record
これ使うとスッキリ書けるらしい
なにを?

レコードの更新
破壊的な変更はしない
null undefined はない
再帰的なレコードの定義はできない
elm
r = {x=3, y=2} -- 束縛。以降値は変化しない xOver10 {x} = x > 10 xOver10 r -- False newR = { r | x = 100 } -- r.xを更新して返す xOver10 newR -- True


リファクタ

Elmが「ランタイムエラーがない」っていうのは、実行時の検査を最小に抑え、静的検査を頑張ってるって意味か?
でも境界値チェックとかしないやろ?Haskellとかと同じなんじゃないのか
なんで、「Elmだから」を強調してこういうことを言っているのかわからん
ありがたいことに解答を頂いた
Storeが一つだと複数人開発するとコンフリクト起こりやすくない?
乱数の仕組み
Subscritionの意味
どのぐらいの規模でカスタムコンポーネント的なやつに分けるんだろう

一度に複数のMsg関数を実行したければどうする?
まとめたMsgを更に定義する?
ex. c を実行したらupdateの内部で a , b を呼ぶ
今は2つを同時に呼びたくて、どちらも引数なし
Haskellならdo式の中で書いてる感じ
こう?まじ?
だめだ。これでは1のほうが動かない
elm
onClick (Msg1 |> (\_ -> Msg2))
List.map a b ref






Elm製ゲーム一覧 ref
スネークゲーム ref
お名前シールメーカー ref
PWA デスクトップアプリ ref
エクセル ref
chromeのオフラインの恐竜のゲーム ref
タイピングゲーム ref
ゲーム ref
くぉーたーびゅー ref