- 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
あとで追記