[MLton] Bug: TextPrimIO does not distinguish between EOF and
	no data
    Ville Laurikari 
    ville at laurikari.net
       
    Thu Dec 13 10:01:24 PST 2007
    
    
  
On Thu, Dec 13, 2007 at 07:46:36AM -0600, Matthew Fluet wrote:
> Someone should check whether similar logic needs to be pushed to the
> StreamIO layer.  (I haven't.)
StreamIO (from basis/io/stream-io.fun) does seem to work already:
   fun loop stream =
       case TextIO.StreamIO.canInput (stream, 1) of
          NONE => (print "Would block.\n"
                 ; OS.Process.sleep (Time.fromSeconds 1)
                 ; loop stream)
        | SOME _ =>
          case TextIO.StreamIO.inputLine stream of
             SOME (line, stream) => (print line
                                   ; loop stream)
           | NONE => print "EOF\n"
   val () = loop (TextIO.getInstream TextIO.stdIn)
   $ mlton nobug.sml
   $ (echo foo; sleep 1; echo bar; sleep 1) | ./bug
   foo
   Would block.
   bar
   Would block.
   EOF
   $
I think I'll make these into a regression test...
--
http://www.iki.fi/vl/
    
    
More information about the MLton
mailing list