
From: Cale Gibbard [mailto:cgibbard@gmail.com] See: http://haskell.org/pipermail/haskell-cafe/2003-January/003794.html
The OI comonad as previously envisioned breaks referential transparency. I/O just doesn't seem to be something which one can easily do comonadically, since once coeval/extract is applied, you're back to plain values, and there's no imposition of sequencing.
- Cale
Hmm, I hadn't seen that. The asymmetry is pretty frustrating in that case. After poking around a bit more, I (re)discovered some discussion of this on Hawiki: http://www.haskell.org/hawiki/CoMonad After reading Dave Menendez's comments, I'm wondering... If we consider IO a = Realworld -> (Realworld, a) then wouldn't we dually have something like OI a = (Realworld, Realworld -> a)? Could this be what screws things up? Right now it seems like OI is acting like it has the same type as IO, with a different name. Chad Scherrer Computational Mathematics Group Pacific Northwest National Laboratory "Time flies like an arrow; fruit flies like a banana." -- Groucho Marx