[Haskell-cafe] Couple of questions about *let* within *do*

Bill Atkins watkins at alum.rpi.edu
Tue Aug 10 13:42:28 EDT 2010


The let's aren't really statements, they're just named expressions and are still subject to lazy evaluation.

In:

 let x = putStrLn "Name" >> getLine
 putStrLn "Welcome"
 x

The program will print:

 Welcome
 Name?

and then prompt for input, even though the let comes first.

And if you never ran the 'x' action, then the user would just see "Welcome" and the block of code would finish (because lazy evaluation still applies).

On Tuesday Aug 10, 2010, at 12:49 PM, Felipe Lessa wrote:

> The (let ... in ...) construct is an expression, while the (let ...)
> inside 'do' is a statement.  The (do ...) itself is an expression.



More information about the Haskell-Cafe mailing list