| ... | ... | @@ -103,6 +103,12 @@ expect. |
|
|
|
documentation.
|
|
|
|
- Long-running pure code must be refactored into the IO monad so
|
|
|
|
that explicit yield points can be inserted.
|
|
|
|
- Lazy I/O is not non-blocking in a cooperative implementation, so
|
|
|
|
lazy I/O would be restricted to single-threaded programs.
|
|
|
|
- Extra restrictions: inside `unsafePerformIO` we can't guarantee that
|
|
|
|
`yield` works, or that concurrent and/or reentrant foreign calls
|
|
|
|
work as expected. (ditto `unsafeInterleaveIO`, which is why
|
|
|
|
lazy I/O doesn't play with cooperative concurrency).
|
|
|
|
|
|
|
|
|
|
|
|
|
| ... | ... | |