The bit about user input was nonsense; the example wasn't using the `user` 
it defined.  Here is a more minimal main (with the same `worker`):

    main = do
        (output, input) <- spawn (Bounded 1) 
        a1  <- async $ runEffect $ fromInput input  >-> worker 1
        a2  <- async $ runEffect $ yield 1 >->  toOutput output
        wait a1
        wait a2 

      $ ./work
     Worker #1: Processed 1
     work: thread blocked indefinitely in an STM transaction

It works if a higher `Bounded` or if `Unbounded` is chosen; it works if the 
second `wait` is dropped, etc.
The most striking difference was the use of `Unbounded` in the good version 
and `Bounded` in the separate module.



-- 
You received this message because you are subscribed to the Google Groups 
"Haskell Pipes" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].

Reply via email to