[Haskell-cafe] Using catch and errors

Cale Gibbard cgibbard at gmail.com
Fri Apr 22 12:42:35 EDT 2005


On 4/22/05, robert dockins <robdockins at fastmail.fm> wrote:
> 
> > Now I have one problem (Well 2 really but the second one is just me not
> > having programmed in haskell for so long that I forgot). getLine is used for
> > the sole purpous of stopping the program and allowing the user to read the
> > error message before the window closes but error does not allow me to do
> > that and aparently using a lambda function (As shown below) does not work
> > (It gives error upon compilation
> >
> >  when ((length keyno /= 1) && (keyno /= "1") && (keyno /= "0")) (\_ ->
> > putStrLn "Please input either 0 or 1 as key number"
> >
> > getLine
> >
> > exitWith ExitSuccess)
> >
> > So is there anyway to fix that?
> 
> You need a "do" not a lambda ( or use >> )
> 
> when (stuff) (do putStrLn "blah"
>                   getLine
>                   exitWith ExitSuccess)
> 
> or
> 
> when (stuff) (putStrLn "blah" >> getLine >> exitWith ExitSuccess)
> 
> > The second error is that apparenlty (keyno /= "1") and (keyno /= "0") do not
> > work, but I suspect that, like Java, one can't compare strings using = sign
> > or am I wrong?
> 
> No, that should work.  Haskell equality is not at all like Java
> equality.  In java, '=' basicaly means pointer equality.  I am not aware
> of a way to even make that comparison in Haskell (in general).  Haskell
> '=' behaves a lot more like equals() in Java.
> 
Of course, you mean Haskell '==', as Haskell '=' is declared equality,
which is somewhat like '=' in mathematics.

> Remove the length test and I think your condition will do what you expect.
> 
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>


More information about the Haskell-Cafe mailing list