Yes, an if statement must have both 'then' and 'else' branches.  As an
example, what if you had

let a = if b == 2 then True else False

and you were missing an else branch?  What would 'a' get assigned to?

The if statement "returns" a value so must have both branches.

However, in a monadic constraint, there are the functions 'when' and
'unless.'  They allow conditional evaluation of expressions in a monadic
context.  For example,

main = do
  line <- getLine
  when (line == "hello") putStrLn "Hello back!"

Cheers,
 - Tim


On Wed, Oct 21, 2009 at 7:43 PM, michael rice <[email protected]> wrote:

> It looks like both the THEN and the ELSE in an IF expression must each have
> an expression. What's a graceful way to do nothing in either or both slots,
> kind of like the Fortran CONTINUE statement.
>
>   --mr
>
> ================
>
> [mich...@localhost ~]$ ghci
> GHCi, version 6.10.3: http://www.haskell.org/ghc/  :? for help
> Loading package ghc-prim ... linking ... done.
> Loading package integer ... linking ... done.
> Loading package base ... linking ... done.
> Prelude> if (1==1) then else
>
> <interactive>:1:15: parse error on input `else'
> Prelude> if (1==1) then True else
>
> <interactive>:1:24: parse error (possibly incorrect indentation)
> Prelude> if (1==1) then True else False
> True
> Prelude>
>
>
>
> _______________________________________________
> Haskell-Cafe mailing list
> [email protected]
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
>
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to