Four ways of declaring interfaces in Haskell | Hacker News Reader