Elm
https://upload.wikimedia.org/wikipedia/commons/thumb/f/f3/Elm_logo.svg/1200px-Elm_logo.svg.png
Evan Czaplickiが2012年に修士論文で作ったHaskell inspiredな言語
AltJS
もともとはFRPな言語だった
抽象化を犠牲にしてシンプルなコードを書くことを大事にしてる
中途半端な状態でもコンパイルエラーがなければ実行時エラーは起きない
HTML, CSS, JSを生成
デフォルトでVirtual DOM
The Elm Archtecture
ElmとJSとのデータのやり取り
ElmのNavigation
Elmの型
Elmの非同期処理
ElmのHtml
Elmのモジュール
ElmでSPAを作る
Elmのテスト
ElmのTest
https://speakerdeck.com/ytaka23/we-are-javascripters-23rd
https://package.elm-lang.org/packages/elm-explorations/test/latest/Test-Html-Query
FRP時代のElm
Elm/Compilerのコードリーティング
Docs
play groundもある
ググるといろいろ出てくるが結局公式が一番新しい
Elmはバージョンが上がると結構いろいろ変わるっぽいのですぐ情報が古くなる
tutorial
discord
https://discordapp.com/invite/4j2MxCg
Style Guide
elm-formatというのがある
HTML to Elm
サイト名の通り。
HTMLとElmに変換する
本
Introduction · An Introduction to Elm
はじめに · An Introduction to Elm
日本語版
はじめに · プログラミング言語Elmの薄い本
バージョンが古い
https://github.com/dtwrks/elm-ui-book
scrapbox
/elm-jp
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で書く
elm-node
HaskellでElmコードを生成する
elm-export
servant-elm
メモ
React, Reduxの上でElm使うことできるらしいmrsekut.icon
ReactNatveでも使えるらしい
管理画面などのようなSEOや速度を気にしないツールを作るのが得意
なんで?
ベスプラ
https://jinjor-labo.hatenablog.com/entry/2016/12/04/002210
https://elm-lang.org/docs/style-guide
Elm is wrong
https://reasonablypolymorphic.com/blog/elm-is-wrong/
パッケージの依存関係直すやつ
https://www.markuslaire.com/github/elm-dependencies-analyzer/
Debug
devtoolのconsoleに表示される
updateのmsgのところに挟むとか
code:elm
case Debug.log "msg" msg of
Haskellとの比較
http://doloopwhile.hatenablog.com/entry/2014/12/04/014534
elm-ui
https://qiita.com/nikueaters/items/5ad7f1ea541c64e7c035
CSS: Flexboxみたいなやつ
CSS
https://github.com/rtfeldman/elm-css
https://github.com/aratama/elm-css-light
extensible record
https://medium.com/@ckoster22/advanced-types-in-elm-extensible-records-67e9d804030d
これ使うとスッキリ書けるらしい
なにを?
レコードの更新
破壊的な変更はしない
nullやundefinedはない
再帰的なレコードの定義はできない
code:elm
r = {x=3, y=2} -- 束縛。以降値は変化しない
xOver10 {x} = x > 10
xOver10 r -- False
newR = { r | x = 100 } -- r.xを更新して返す
xOver10 newR -- True
リファクタ
https://qiita.com/y047aka/items/6a7de643feec3f9d5ffa
#??
Elmが「ランタイムエラーがない」っていうのは、実行時の検査を最小に抑え、静的検査を頑張ってるって意味か?
でも境界値チェックとかしないやろ?Haskellとかと同じなんじゃないのか
なんで、「Elmだから」を強調してこういうことを言っているのかわからん
ありがたいことに解答を頂いた
Storeが一つだと複数人開発するとコンフリクト起こりやすくない?
乱数の仕組み
Elmでインド式計算練習マシーンを作りたい#5e0ae7431982700000306700
Subscritionの意味
Elmでインド式計算練習マシーンを作りたい#5e0b08a9198270000030670f
どのぐらいの規模でカスタムコンポーネント的なやつに分けるんだろう
一度に複数のMsg関数を実行したければどうする?
まとめたMsgを更に定義する?
ex. cを実行したらupdateの内部でa,bを呼ぶ
今は2つを同時に呼びたくて、どちらも引数なし
Haskellならdo式の中で書いてる感じ
こう?まじ?
だめだ。これでは1のほうが動かない
code:elm
onClick (Msg1 |> (\_ -> Msg2))
List.map a b ref
http://jinjor-labo.hatenablog.com/entry/2017/04/27/124105
https://qiita.com/jinjor/items/772d8765f5743cc24e9a
https://www.izumisy.work/entry/2019/08/17/152455
http://40balmung.hatenablog.com/entry/2018/09/23/101200
#作成ネタ
Elm製ゲーム一覧 ref
スネークゲーム ref
お名前シールメーカー ref
PWA デスクトップアプリ ref
エクセル ref
chromeのオフラインの恐竜のゲーム ref
タイピングゲーム ref
ゲーム ref
くぉーたーびゅー ref
#プログラミング言語