[Haskell-cafe] Is there a null statement that does nothing?

Bulat Ziganshin bulat.ziganshin at gmail.com
Thu Oct 22 03:10:34 EDT 2009


Hello michael,

Thursday, October 22, 2009, 4:59:43 AM, you wrote:

"return ()" does the trick if another branch also returns ()

> Thanks guys,

> I understand what you're telling me, but have some nested IFs and
> just want to fall through on one of the ELSES but then I end up with
> two ELSES in a row and nothing between them. Oh, well, on to restructuring.

> Michael 

> --- On Wed, 10/21/09, Tim Wawrzynczak <inforichland at gmail.com> wrote:

> From: Tim Wawrzynczak <inforichland at gmail.com>
> Subject: Re: [Haskell-cafe] Is there a null statement that does nothing?
> To: "michael rice" <nowgate at yahoo.com>
> Cc: haskell-cafe at haskell.org
> Date: Wednesday, October 21, 2009, 8:49 PM

> 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 <nowgate at yahoo.com> 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

> ================ 

> [michael at 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 
>  Haskell-Cafe at haskell.org
>  http://www.haskell.org/mailman/listinfo/haskell-cafe
>  


>  


>   


-- 
Best regards,
 Bulat                            mailto:Bulat.Ziganshin at gmail.com



More information about the Haskell-Cafe mailing list