
[A bit late reply - I've just returned from vacation] On Sun, Jan 08, 2006 at 05:47:19PM -0000, Brian Hulley wrote:
All I'm proposing is that the compiler should do all this painful work for you, so that you don't need to bother creating a different file that then needs two import directives to achieve the effect I want. Is there any case where you would *not* want a type to be declared in its own module?
I can think of such cases - for example consider a set of mutually recursive datatypes used to represent abstract syntax trees in some language. Of course, I imagine that "your modules" could be introduced in such a way that would still allow recursion, but it's simply more natural for me to place all those declarations in one module named Syntax or AST.
It is quite simple to create a new layout rule. My idea with this is that all lines should start with zero or more tab characters (non-tab leading whitespace is disallowed),
All lines start with at least zero tab characters, trivially.
and all layout blocks should start on a new line.
That's a good coding practice (yes, you can write like this in Haskell already), making your code more change-friendly, which is especially important when you use some version control tool. It would be nice if this could be enforced by the compiler, at least as some kind of a warning. I encourage you to add such option to some Haskell compiler, or a coding policy checking tool :-)
Moreover, it is possible to completely dump the ugly let..in construct, and make "=" one of the tokens that can start a new layout block, so instead of:
f x = let a = x+1 b = x + 2 in a + b
How about f x = let a = x + 1 b = x + 2 in a + b Anyway, I would use "where" here.
one would simply write:
f x = a = x+1 b = x+2 a + b
I don't like it. It's shorter, but less readable too. You could simply write: f x = a + b where a = x+1 b = x+2 which is not that much longer, but much more readable. Best regards Tomasz -- I am searching for programmers who are good at least in (Haskell || ML) && (Linux || FreeBSD || math) for work in Warsaw, Poland