I don't know of any offhand that specifically call it out -- it's a
natural consequence of the layout rule which is described in the
Haskell Report. However, there is at least one ticket in Haskell' to
fix it for if/then/else: http://hackage.haskell.org/trac/haskell-prime/ticket/23
-Ross
On Oct 8, 2009, at 1:03 PM, michael rice wrote:
Thanks all,
So, in a do expression
let x = 1
y = 2
etc.
in z = 1 + 2
if <bool expr>
then
etc.
else
etc.
Is this deviation documented somewhere?
Michael
--- On Thu, 10/8/09, Brandon S. Allbery KF8NH <allb...@ece.cmu.edu>
wrote:
From: Brandon S. Allbery KF8NH <allb...@ece.cmu.edu>
Subject: Re: [Haskell-cafe] Let it be
To: "michael rice" <nowg...@yahoo.com>
Cc: "Brandon S. Allbery KF8NH" <allb...@ece.cmu.edu>, haskell-cafe@haskell.org
Date: Thursday, October 8, 2009, 11:53 AM
On Oct 8, 2009, at 11:43 , michael rice wrote:
This doesn't:
import System.Random
main = do
gen <- getStdGen
let (randNumber, newGen) = randomR (1,6) gen :: (Int, StdGen)
in putStrLn $ "Number is " ++ show randNumber
[mich...@localhost ~]$ runhaskell zz.hs
zz.hs:4:2:
The last statement in a 'do' construct must be an expression
The problem here is that the "do" construct parses things a bit
differently; if you're at the same indentation level, it inserts a
(>>) on the assumption that the next line is an independent
expression, so you need to indent the "in" a bit more to avoid it.
Note however that this usage is common enough that "do" provides a
shorthand: you can simply omit the "in", and "let" will be parsed
as if it were a statement:
> main = do
> gen <- getStdGen
> let (randNumber, newGen) = randomR (1,6) gen :: (Int,StdGen)
> putStrLn $ "Number is " ++ show randNumber
--
brandon s. allbery [solaris,freebsd,perl,pugs,haskell] allb...@kf8nh.com
system administrator [openafs,heimdal,too many hats] allb...@ece.cmu.edu
electrical and computer engineering, carnegie mellon university
KF8NH
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe