Andrei Alexandrescu wrote:
I've had a talk with Walter today, and two interesting things transpired.

First off, Walter pointed out that I was wrong about one conversion rule (google value preservation vs. type preservation). It turns out that everything that's unsigned and less than int is actually converted to int, NOT unsigned int as I thought. This is the case in C, C++, and D.

That has some interesting consequences.

  ushort x = 0xFFFF;
  short y = x;
  printf("%d %d %d\n", x>>1, y>>1, y>>>1);

// prints: 32767 -1 2147483647

What a curious beast the >>> operator is!

I'm very excited about polysemy. It's entirely original to D, covers a class of problems that can't be addressed with any of the known techniques (subtyping, coercion...) and has a kick-ass name to boot.

I agree. By making the type system looser in the one place where you actually need it to be loose, you can tighten it everywhere else. Fantastic.

Reply via email to