"Simon Marlow" <[EMAIL PROTECTED]> writes: > BTW, I just realised a better way to express block. If block is > supposed to count nesting, then we have a problem that you can still > unblock exceptions even within a block by using sufficient number of > unblocks, so the right way is to give block this type: > > block :: ((IO b -> IO b) -> IO a) -> IO a
Or perhaps: block :: ((forall b. IO b -> IO b) -> IO a) -> IO a It doesn't fit classic mutexes and conditions with my semantics of implicit blocking, because condition wait should restore the blocking state to the one before taking the mutex - but the condition wait is written without explicit passing of any value from the point of taking the mutex. I'm not sure how it carries over to Haskell patterns though. -- __("< Marcin Kowalczyk \__/ [EMAIL PROTECTED] ^^ http://qrnik.knm.org.pl/~qrczak/ _______________________________________________ Haskell-prime mailing list Haskell-prime@haskell.org http://haskell.org/mailman/listinfo/haskell-prime