[Haskell-cafe] Avoiding name collisions by using value spaces
instead of modules
Tomasz Zielonka
tomasz.zielonka at gmail.com
Mon Jan 16 06:51:13 EST 2006
[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
More information about the Haskell-Cafe
mailing list