[Haskell] Re: class assosiated types, via GADTs or FDs