The Matlab C headers provide some kind of hand-crafted contracts by defining extra functions with suffix "_d" that check all the arguments and then detouring the calls to the original functions via the preprocessor (#define foo foo_d)

Of course I could do it the same way, but wouldn't it be better to add this case to D's contract programming similar to interface contracts?

extern(C) int foo(int i)
  in { assert(i > 7); }
  out (result) { assert(result & 1); }

Reply via email to