[Haskell-cafe] Strong duck typing / structural subtyping / type class aliases / ??? in Haskell