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



Reply via email to