Revenge of the Types
Random question for the type experts out there: is there any language that lets me track the units of my numeric variables? For instance, something like this:    float drop(float x0, float duration) {
      float x = x0;
      float t = 0;
      float v = 0;
      float g = -10;
      float dt = 0.01;
      while (t < duration) {
        v += g*dt;
        x += v*dt;
        t += dt;
      }
      return x * (1/1000);  // abbrev for a cast: (float).001
    }

Then I want the compiler to check that I'm not mixing up my units. It seems like this would be really useful, but I've never seen it before.