[Haskell] class assosiated types, via GADTs.