
Haskell very specifically has the really vitally important property that when you change the imports of a module in any way whatsoever, only one of two possible results can occur 1) the module behaves identically to the way it did before. or 2) the module fails to compile with an unambiguous compile-time error. This is a very important property that I wouldn't be willing to give up. also, it is nice for a human to not have to know what is imported to be able to locally determine what a function does to some degree. this would not be possible if you couldn't tell what was a constructor and what was a variable locally. heck, you can't even tell what is being defined. think of x + y * z = ... this could be declaring three top level names, x,y, and z or the function (+) or perhaps even just y and x and not z (or even a couple more possibilities) depending on which were constructors and which were variable names which you cannot determine without examining every import. not even being able to tell what values an expression is defining is a pretty bad quality :) John -- John Meacham - ⑆repetae.net⑆john⑈