Haskell で非同期 HTTP Request
複数の HTTP Request を非同期で実行する例 ( http.async.client のコールバックAPIを使って非同期 HTTP Request - hyoneの日記 と同じ題材 ) を async ライブラリを使って書いてみた。
参考にしたサイト
型レベルで FizzBuzz
最近、 Type Family, Datatype Promotion, Kind Polymorphism といったあたりの話をいろいろ読んでいたので、練習に型レベルで FizzBuzz を書いてみた。
型レベルの計算の記述は、まだまだ冗長でスマートでない感じだけど、 GHC 7.6.1 で導入されたという Promoted Literals とか、 http://byorgey.wordpress.com/2010/07/19/typed-type-level-programming-in-haskell-part-iii-i-can-haz-typs-plz/ に書かれている Promoted Function? が実現すれば、型レベルでも値レベルとほとんど同じように記述 ( 共有 ) できる、というすごい事になるのだろうか。
ある型のうち一部の複数のデータコンストラクタのみを受け付ける関数を定義する
GADTs を使うと、以下のように、ある型のうち、特定のデータコンストラクタのみを受け付ける関数を書くことができるようになるけど、
これだと、ある型のうち1つのデータコンストラクタだけ受け付ける関数しか定義することができない。指定した複数のデータコンストラクタだけ受け付ける関数を書くにはどうすればよいか少し悩んだのだが、普通に型クラスを使えばよいだけであった。