ghc puzzling behaviour