haskellの勉強として、twitter apiライブラリを書いてみた
すごいH本をひと通り読んだので次は自分でコードを書いてみようと思い、Twitter APIのライブラリを適当な感じで書いてみました。
Attsun1031/birdwatcher · GitHub
使い方
import Web.Birdwatcher main = do user <- users_show [("screen_name", "__Attsun__")] putStrLn $ show user
感想
- モナドむずい
- Aesonが便利(型クラスの仕組みのおかげ?)
- ライブラリコードを読んだりcabalを設定したりするのに時間を多く使ってしまったので、使った時間の割にはコード量が少なかった。
レコードのアクセサ関数で困った
レコードとは以下の様な構造体のようなもの。
data Point = Pt {x :: Integer, y :: Integer}
レコードを定義すると、フィールドへのアクセサ関数x, yが自動的に定義されるわけだけど、アクセサ関数の名前がだぶってしまうので同じ名前のフィールド名を持つレコードを同じ名前空間に複数おけない。
例えば自分の作ったライブラリの場合、UsersShowとUserTimelineのどちらにもidという名前があるため同じ名前空間におけない。とりあえずmoduleを分けるという手で対処しているが、分けたくないってケースもあるだろうし、どうやってやりくりするんだろ?