- Elm Advent Calendar 2016 - Adventar 12日目
- Elmの勉強の記録
- 今回は読書ノート
- Elm in Actionは今日で終わり
- 2016.12.12時点、Elm in Actionは4章までしかUpされていない
Chapter 4: Taking to Servers
- Richard Feldman, Elm in Action MEAP V03, pp.88-119
- 前々回、前回の続き
学んだこと、目に留まった箇所
Result a b型
Elmでのエラーハンドリングで主に目にするデータ型
- という風に自分は理解した
- HTTPリクエストでのエラー、JSONデコードでのエラー。この2つを取り上げてる
- サンプルアプリでサーバーから写真を取ってくる機能の実装を例に説明してる
type Result errValue okValue
= Err errValue
| Ok okValue
-
failしうることを表現するデータ型
- union typeを使って型定義される。が、型変数を2つ持つところが
Maybeと違うとこ- 失敗時に渡る型変数が前になってる(作法的な離乳なのかは、今の所自分はわかってない)
HTTP通信niokeruResult a b型
commandを返すHttp.sendの1つ目の引数において使われる
send : (Result Error a -> msg) -> Request a -> Cmd msg
- コマンドにラップされる
msgを返す関数の引数がResult a b型 - Elmのdocumentでは、
Result Error a型として1つめの型引数をError型に絞って定義してる
この4章の中では
Result Http.Error String
とResult a 型は詳細に定義される
- エラーは、
Http.Error型 - 成功時の型変数は、利用される文脈を加味して、
String型と特定してる - 生のレスポンスデータがテキストデータであることを踏まえてる
Decoder a型について
JSONのデコードにおけるResult a b型の使われ方の中で、登場するので、サクッと整理
-
Decoder a型は、RandomモジュールにおけるGenerator a型に似た役割 -
Generator a型は、ランダムなデータの生成器だった -
Decoder a型は、字面の通りJSONの解読器を表し、型変数aが、どんな構造のデータを扱うかを示す
JSONデコードにおけるResult a b型
decodeString : Decoder val -> String -> Result String val
- 失敗時のエラーメッセージは
Stringとして固定 - 型変数
valは扱うデータの構造に応じて指定できる - といっても、現実には
Record型一択
ベンキョーになったが細かい話
String.split
String.split : String -> String -> List String
あとで追記