On Aug 17, 2006, at 10:18 AM, Szymon ZÄ…bkiewicz wrote:

Hi.

When trying to compilke this code:

{...}
8.if (a == 0) && (b == 0)
9.       then do
10.             nr1 <- read (prompt "enter 1. number: ")
11.             nr2 <- read (prompt "enter 2. number: ")
12.       else do
13.            let nr1 = a
14.                nr2 = b
{...}

The compiler tells me thats there's an error on line 10:
"The last statement in a 'do' construct mesy be an expression"

Could you tell me how to change it so that the "declaration" of the
first nr1 and nr2 is still in the "then" block.

The problem is that variables defined in the branch of an if are local to the branch. If you want to use them outside you have to return them from the branch:

do
  (nr1, nr2) <-
    if (a == 0) && (b == 0)
    then do
           nr1 <- read (prompt "enter 1. number: ")
           nr2 <- read (prompt "enter 2. number: ")
           return (nr1, nr2)
    else do
           let nr1 = a
               nr2 = b
           return (nr1, nr2)

/ Ulf_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to