"C.Reinke" <[EMAIL PROTECTED]> writes:
>
> > Thanks for reporting this; now fixed.
> > 
> > --sigbjorn
> 
> Thanks for fixing;
> as usual, I'm impressed by this efficiency!-)
> 

fyi, the fix implements what the Report prescribes, but I
don't agree with it -- getLine ought not raise an exception
on EOF when having read in a partial line. As is, you will lose
input if it isn't terminated by a newline. Not too cool.

> Btw, is there a way to indicate end-of-input in Hugs?
> 
> In typical shells, that would be CTRL-D, and makes things
> like the "cat >script" work at the prompt (and it doesn't
> end the shell if there is a nested process waiting for input).
> 

Yes, you can (by being EOT-savvy):

getLine :: IO [Char]
getLine = do
   ch <- getChar
   if ch == '\n' || ch == '\EOT'
    then return ""
    else do
       ls <- getLine
       return (ch:ls)

Whether or not this should be done by Prelude-provided functions
like 'getLine', 'interact' and 'getContents' is worth giving some thought.
There is a risk of introducing breakage though, as binary data read
in via stdin will then be interpreted in unintended ways.

--sigbjorn


_______________________________________________
Hugs-Bugs mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/hugs-bugs

Reply via email to