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