[Haskell-cafe] PrefixMap: code review request

Cale Gibbard cgibbard at gmail.com
Mon Feb 27 23:39:32 EST 2006


On 27/02/06, David F. Place <d at vidplace.com> wrote:
>
> On Feb 27, 2006, at 5:54 PM, Brian Hulley wrote:
>
> > there is a parse error (using ghc) at the line beginning with
> > result'. This binding doesn't line up with anything. Also the
> > second 'where' is dangerously close to the column started by the
> > 'f' after the first 'where' (may not be noticeable in this email
> > due to whatever font it is being displayed in but it's only
> > indented by one space) which makes it a bit tricky to read.
>
> Whoops, that's noise in the transmission.  In my original file and my
> original email, it is indented correctly.  As for other indentation
> issues, I always use whatever emacs suggests.  Is that not a good
> strategy?
>
I find that I often really dislike emacs' choices for indenting -- so
much so that I had to turn off smart indenting altogether to avoid
holding down the spacebar all the time (of course it remaps tab). The
simple indenter gives all the possible sane selections for lining
things up and lets you indent further if you want. I'd normally go
with the first of Brian's suggestions for laying out an if expression
(condition on one line, then and else aligned at a deeper depth right
after it), unless the condition was really long, in which case I might
switch to the second to get a little more space on that first line.

I don't personally worry about tab width, as long as things line up in
any given function definition. I usually use 4 spaces when not
thinking about it, but sometimes 3, or even 2, or far more, if it
makes things look better. Most editors are quite good at putting the
cursor at the same indent level on the following line, and this is all
the help you tend to need in this regard when editing a file.

(Random musing: It would be neat to have an editor which dropped
subtle vertical bars under the start of blocks, to make it easier to
visually apply the layout rule, and see when you haven't indented far
enough, and the block is broken.)

Always tell your editor to leave tabs out of your files. There are
very few Haskell programmers who actually leave tabs in their source,
and mixing spaces and tabs can be deadly. You can set this in emacs by
adding
(setq-default indent-tabs-mode nil)
to your .emacs if you haven't already done so. If you also use vim,
set expandtab
is the line you want. :)

 - Cale


More information about the Haskell-Cafe mailing list