Aeson
HaskellでJSONを扱うLibrary
類似
命名の意味
(A note on naming: in Greek mythology, Aeson was the father of Jason.)
おしゃれかよ

Interfaceがキレイでいいなー

わかりやすい
JSONとデータ型間の相互変換の方法は3種類
自前で変換する関数を定義する
最も柔軟だが、めんどい
Generic型クラスを用いた自動導出
楽
Template Haskellを用いた自動導出
Value
型
Jsonを表す型
Object | Array | String | Number | Bool | Null
のような雰囲気のやつ
parseJSON :: Value -> Parser a
いやー、そうでもないか

toJSON
の定義に .=
を使って書く
toJSON :: a -> Value
.=
は、
.
を無視すればrecordの値を更新するときの
=
っぽく見えないこともない

あとは、 decode
, encode
関数で相互に変換できる
確かに↓の例見れば、めちゃくちゃ自明なものをわざわざ自前で書いているのはわかりやすい

ほとんど何も書かなくていい
hsのjsonについて