[Haskell] Re: Help : A problem with IO

Chris Eidhof chris at eidhof.nl
Wed Nov 26 11:29:34 EST 2008


On 26 nov 2008, at 17:18, abdullah abdul Khadir wrote:

> Hi,
>
>     The function getMyLine written by me is intended for getting a  
> complete string from the standard input.
>
> import IO
>
> getMyLine :: IO [Char]
> getMyLine =  do
>                 c <- getChar
>                 if(c == '\n')
>                         then return ""
>                         else    cs <- getMyLine
>                                 return [c]
>
> However I keep getting the following error:
>
> io.hs:14:2: Parse error in pattern
> Failed, modules loaded: none.
>
>         I fail to understand what the error is. I tried out various  
> things such as changing the alignment and so on to no avail. The  
> following program, however, compiled successfully though it has the  
> same structure as the previous program.

The "else" should be replaced by "else do". Probably you'll also want  
the last line to be "return (c:cs)".

By the way, questions like these might be more appropriate on haskell- 
beginners or haskell-cafe.

-chris

>
>
> checkd :: IO Bool
> checkd = do
>                 c <- getChar
>                 if(c=='d')
>                         then    return True
>                         else    return False
>
> Prelude> :load ./io.hs
> [1 of 1] Compiling Main             ( io.hs, interpreted )
> Ok, modules loaded: Main.
> *Main> checkd
> d
> True
>
> _______________________________________________
> Haskell mailing list
> Haskell at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell



More information about the Haskell mailing list