LoginSignup

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

More than 5 years have passed since last update.

Elm in Action, chapter 4: Talking to Servers(その3)

Last updated at Posted at 2016-12-12
  • Elm Advent Calendar 2016 - Adventar 12日目
  • Elmの勉強の記録
  • 今回は読書ノート
    • Elm in Actionは今日で終わり
    • 2016.12.12時点、Elm in Actionは4章までしかUpされていない

Chapter 4: Taking to Servers

学んだこと、目に留まった箇所

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

あとで追記

0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up