Type equivalency 2

Lennart Augustsson lennart@augustsson.net
Thu, 06 Jun 2002 18:00:36 +0200


Cagdas Ozgenc wrote:

> Then either -> is not a type constructor, or the concept of type
> constructors has to be divided into two : consuming type constructors, and
> producing type constructors. If so then language has to support a way to
> define consuming type constructors as well, in order to be consistent within
> itself.
>
> I think -> is defined to be a type constructor to make functions first class
> values. In the meantime, type systems that support subtyping seem to treat
> the arrow in a special fashion. For example
>
> if  A <: B and C <: D then (B -> C) <: (A -> D)   where a <: b indicates 'a'
> being a subtype of 'b'

A language with subtyping would have to treat any contravariant type
constructors
in a similar way.

    -- Lennart