
On Sat, Jun 19, 2010 at 07:23:50PM -0700, Evan Laforge wrote:
On Sat, Jun 19, 2010 at 6:00 PM, Felipe Lessa
wrote: On Sat, Jun 19, 2010 at 08:38:52PM +0200, Christian Höner zu Siederdissen wrote:
But the more important thing is, that it makes extending module functionality a pain (eg. if a constructor is not exported using (..)).
I think this is another problem. Sure, without export lists you *currently* can't hide those constructors. However, languages like Java don't have export lists as well. Imagine if we could write this in Haskell:
private data Foo a = Foo a (Foo (Either a a))
But that's just a syntactical difference. I suspect whether you prefer to put visibility directly on the definition or collect it all in one place depends on personal taste and what you're used to.
That's my point. Hiding a constructor is orthogonal to using export lists. Cheers, -- Felipe.