Thanks all,
I got it working finally. What did i learn ?
a) I need to put a do after else for more than one instruction (?)
b) All similar type of questions are to be redirected to haskell-beginner and haskell-cafe
Points noted.
Thank you once again,
Abdullah Abdul Khadir
if it should really read whole line, it must try to somehow chain the values into the string / list of chars (using (:) )then return "" -- imho [] looks nicer ;-)
getMyLine :: IO [Char]
getMyLine = do
c <- getChar
if (c == '\n')
else do
rest <- getMyLine
return $ c : rest
-- orthen return "" -- imho [] looks nicer ;-)
getMyLine :: IO [Char]
getMyLine = do
c <- getChar
if (c == '\n')
else getMyLine >>= return . (c:)
-- or even shorter and still equivalent ;-)
getMyLine :: IO [Char]
getMyLine = getChar >>= (\c -> if (c == '\n') then return [] else fmap (c:) getMyLine)2008/11/26 abdullah abdul Khadir <abdullah.ak2002@gmail.com>Hi,
The function getMyLine written by me is intended for getting a complete string from the standard input.
import IOHowever I keep getting the following error:
getMyLine :: IO [Char]
getMyLine = do
c <- getChar
if(c == '\n')
then return ""
else cs <- getMyLine
return [c]
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.
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@haskell.org
http://www.haskell.org/mailman/listinfo/haskell