@Matthew,

I'm reading Conal's Compiling to Categories, and I've found some differences in how we represent functions in `Language k`.

For instance, we have:

neg :: h `k` Bool -> h `k` Bool
neg a = notC . a

But Conal, to represent functions has (page 1:4 of the extended version):

constFun :: Closed k => (a `k` b) -> (z `k` (a -> b))
constFun f = curry (f . exr)

And the representation of neg is then:

neg :: h `k` (Bool -> Bool)
neg = constFun notC

(IMHO this seems more natural, because to represent functions we use exponentials objects in the category.)

I don't know if this difference can be significative for what lays ahead.