[Haskell-cafe] tricky recursive type instance method