Re: Common Lisp solved this problem 20 years ago Alan Watson 26 Oct 2005 23:30 UTC
I don't like the Kawa "coercion" semantic for type declarations; I don't think it is wrong per se, but I much prefer Common Lisps "assertion" semantics. That is, in Common Lisp, if I declare that a variable has a certain type, the compiler can do just about anything, provided the program works correctly when the variable has that type. Common behaviours are: (a) Doing nothing. (b) Complaining if the variable does not have that type. (c) Assuming that the variable has that type and and acting in a way that will be dangerous if it does not. These are often offered as compilation options. They seem to offer a wider range of useful behaviour and a wider range of trade-offs between safety and optimization. The "assertion" semantics also more naturally extend to limited ranges (e.g., asserting that an integer is non-zero) or using unions of types. Regards, Alan -- Dr Alan Watson Centro de Radioastronomía y Astrofísica Universidad Astronómico Nacional de México