
On Thu, 21 Sep 2006, George Brewster wrote:
I'm just tried writing a function to allow convenient embedding of shell commands, but I'm running into behavior I don't really understand somewhere at the intersection of lazy evaluation, IO, and threading.
You may also find some unwelcome surprises in the area of pipes and buffered I/O, that aren't specifically about Haskell. Are you on a UNIX platform? I "rewrote" your function by removing both instances of forkIO, and it worked about like I expected. (The last one encounters an error "broken pipe" when it tries to write "there" to the "echo hi" shell process, because that process exits instead of reading from its input.) I can't say whether you really need forkIO, or whether it's really going to do what you need - not only do I not know enough about the thread model, neither do I know what you're really trying to do. Donn Cave, donn@drizzle.com