
Neil Mitchell wrote:
Hmm, now I'm changing my mind. Those examples make me think that ; is more sensible - since otherwise you are really screwing with small differences in what makes an operator or not - I especially dislike the "leading digits" rule. I would rather that Core didn't care too much about operator vs function differences, but these two examples show it will have to. Therefore I think ; makes more sense.
Okay. As a little side note, you won't believe how nhc98 stores local functions (which I've just discovered) module Foo foo = .. where bar = ... The name Foo.Foo.Prelude.200.bar is actually stored in nhc98 as an instance dictionary! - defined in the module Foo - on the datatype Prelude.200, i.e. the two hundred tuple!?! - to the class(!?) Foo.Foo.bar Yes, really. Thus currently my code encodes the name as Foo;Prelude.(,,,,, ... ,,,,,,,,);Foo.Foo.bar The fiddly bit is going to be deciding that this isn't an instance dictionary but is actually a locally defined function ... *sigh*
If we use ; we can also change it so:
module Foo where
foo = ... where bar = ...
Foo;foo.bar - which is exactly what you would want, to keep as much info as possible.
Of course, this change could be done sometime in the future.
Yes this would be ideal, but unfortunately it would involve some extensive changes as currently nhc98 doesn't store that much information about what a function was defined inside. Cheers :-) Tom