Andreas Rossberg (2013-05-10T19:39:25.000Z)
[+es-discuss]

On 10 May 2013 21:05, Andreas Rossberg <rossberg at google.com> wrote:
> On 10 May 2013 14:52, Mark S. Miller <erights at google.com> wrote:
>> An upper case type variable, e.g. T, is fully parametric. It may be a
>> promise or non-promise.
>> A lower case type variable, e.g. t, is constrained to be a non-promise. If
>> you wish to think in conventional type terms, consider Any the top type
>> immediately split into Promise and non-promise. Thus type parameter t is
>> implicitly constrained to be a subtype of non-promise.
>
> Mark, I'm afraid such a distinction makes absolutely no sense in a
> world of structural types. How would you specify the set of "types
> that aren't promises" in a way that is compatible with structural
> subtyping?
>
> /Andreas
github at esdiscuss.org (2013-07-12T02:27:21.644Z)
On 10 May 2013 14:52, Mark S. Miller <erights at google.com> wrote:
> An upper case type variable, e.g. T, is fully parametric. It may be a
> promise or non-promise.
> A lower case type variable, e.g. t, is constrained to be a non-promise. If
> you wish to think in conventional type terms, consider Any the top type
> immediately split into Promise and non-promise. Thus type parameter t is
> implicitly constrained to be a subtype of non-promise.

Mark, I'm afraid such a distinction makes absolutely no sense in a
world of structural types. How would you specify the set of "types
that aren't promises" in a way that is compatible with structural
subtyping?