I'm learning Gtk2Hs, and there is an interesting pattern to the types. Each type of widget has its own typeclass, e.g. Button and ButtonClass, Window and WindowClass. Is this idiomatic Haskell? Are there other ways to achieve such a hierarchy? (OO languages support such inheritance without requiring an interface for every class.)