Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to nest let statements in Haskell?

Tags:

let

haskell

I'm trying to nest a couple let statements, but I'm getting syntax errors that don't make sense to me. I'm really new to Haskell programming so I'm sure it's something I just don't understand (probably having to do with the spacing). I understand that let and in must be in the same column.

Why is it that:

aaa = let y = 1+2
          z = 4+6
      in y+z

Works perfectly fine, whereas

aaa = let y = 1+2
          z = 4+6
          in let f = 3
                 e = 3
             in e+f

gives me the error: "Syntax error in expression (unexpected `=')"

like image 561
Nico Avatar asked Apr 13 '12 21:04

Nico


1 Answers

In the second example, the z = ... isn't aligned with the y = .... In a let block, every definition has to be aligned.

I suspect you're indenting with tab characters, and have your editor set to display tabs as less than 8 spaces, making it look like it's aligned to you. You should replace the tab with spaces, and preferably set your editor to expand tabs into spaces to avoid problems like this in the future.

like image 139
ehird Avatar answered Oct 17 '22 09:10

ehird