I think we found a way! (With a *ton* of help from @aavogt - might actually be more correct to say he found the way :) )You can use `hDupTo` to change what a Handle points to. You can use `mkFileHandle` in GHC.IO.Internal to create a new file handle. You can implement your own IODevice and BufferedIO datatype to give to `mkFileHandle` instead of using `Fd`. Then, when your "device" is being read from, you just implement `newBuffer` and `readBuffer` to do whatever you need them to.Results pending.-- AndrewOn Sun, Jan 5, 2014 at 4:14 PM, Donn Cave <donn@avvanta.com> wrote:
I bet a quarter you can't do it. You'd need access to the process state -
whether it's blocking for I/O and whether one of the units in the input set
is 0 ("stdin".) Even if you could get that? you'd have to poll for it, which
would be hideous.
That's the UNIX I/O model. I've always found it a little annoying, because
I could do this with the VMS `mailbox' device, analogous to UNIX pipes -
in various ways a more sophisticated interprocess communication system than
UNIX's.
Donn
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe