Evan writes:
| Consider a polymorphic continuation request such as the following:
|
| someRequest :: T a -> (U a -> Dialogue)
and then shows this does not work in the stream model, unless one has
existential types.
Quite true, but note that there are *no* polymorphic IO functions!
At least, not for any `true' polymorphic function satisfying Reynold's
parametricity theorem. See Reynolds' classic 1984 paper, or my
`Theorems for Free'.
On the other hand, something like
someRequest :: (Text a) => T a -> (U a -> Dialogue)
certainly is reasonable. Colin Runciman has noted that this
makes existential types doubly desirable in the presence of
type classes, and Odersky and Laufer have argued something
similar.
Cheers, -- P