>>606
equality constraintというGHC拡張で、(C a ~ D)なら(C a)とDが同じ型だという制約
http://www.haskell.org/ghc/docs/7.6.3/html/users_guide/equality-constraints.html