[Haskell-cafe] Haskell newbie indentation query.
Daniel Fischer
daniel.is.fischer at web.de
Wed Oct 15 08:22:00 EDT 2008
Am Mittwoch, 15. Oktober 2008 13:39 schrieb Ramaswamy, Vivek:
> Hello All~
>
> I have just started with Haskell, and I must confess; I am in love with
> it.
> However one area that I am really confused about is indentation.
> Lets take a look at if-else if- else block.
>
> The way I understand it:
> {------}
> if something
> then do
> something 1
> something2
> else if nothing
> then do
> something3
> something4
> else do
> different
> {-------}
> The code above gives out an error. I have been programming in python
> and the above appears fine.
> But it does not work.
> What works is:
> if something
> then do
> something1
> something2
> else if
> then do
> something3
> something4
> else do
> different
>
> I find the above scheme extremely confusing. I tried going to:
Not for long, it'll become natural pretty fast.
>
> http://en.wikibooks.org/wiki/Programming:Haskell_indentation after
> reading I am even more confused.
> Can somebody please explain how the Haskell indentation works?
>
> The else-if and else seem to be aligning up with "then". They should be
> aligning with "If" in my opinion.
The "then ..." and the "else ..." branches are both part of the if-expression,
so they have to be indented further than the "if". Aligning something with
the "if" ends the expression, so if the "else" is aligned with the "if",
there's an incomplete if-expression and something which should be an
expression but isn't because it begins with "else".
The Layout rule is explained in the report: http://haskell.org/onlinereport/
informally in section 2.7, formally in section 9.3, perhaps that helps.
>
> Thanks in advance.
>
>
> Regards
> -Vivek Ramaswamy-
More information about the Haskell-Cafe
mailing list