kenji hara:
For tuple values with named fields, we need more thoughts about
semantics.
alias MyPair = typeof({1, "hi"});
alias MyRecord = typeof({count:1, msg:"hi"});
static assert(is(MyPair == MyRecord)); // true or false?
static assert(is(MyPair : MyRecord)); // true or false?
static assert(is(MyRecord : MyPair)); // true or false?
alias MyStudent = typeof({num:1, name:"John"});
static assert(is(MyRecord == MyStudent)); // true or false?
One solution:
http://en.wikipedia.org/wiki/Covariance_and_contravariance_%28computer_science%29
{count:1, "hi"} and {1, msg:"hi"} are invariant.
{count:1, msg:"hi"}, {count:1, "hi"} and {1, msg:"hi"} are
covariant to {1, "hi"}.
But I think it's better to leave this to the Stage2.
Bye,
bearophile