История изменений
Исправление den73, (текущая версия) :
Её делали не для типизации, а для оптимизации компиляции.
В CL - может быть. В CMU - нет. Там написано (даже в мануале SBCL, и в CMU тоже), что при стандартной политике компиляции проверка типов точная, т.е. либо компилятор доказывает корректность, либо assert. Это отключается при safety 0. Но это не цель просто оптимизации компиляции. Это оптимизация компиляции с сохранением корректности, в т.ч. это подразумевает и выдачу предупреждений при неверных типах. В мануале CMU написано, почему так сделано. Если следовать стандарту CL и просто оптимизировать компиляцию, программа будет сегфолтиться, и это отвращает от деклараций типов. В CMU сделали костыль, добавляя assert-ы.
Исходная версия den73, :
Её делали не для типизации, а для оптимизации компиляции.
В CL - может быть. В CMU - нет. Там написано (даже в мануале SBCL, и в CMU тоже), что при стандартной политике компиляции проверка типов точная, т.е. либо компилятор доказывает корректность, либо assert. Это отключается при safety 0. Но это не цель просто оптимизации компиляции. Это оптимизация компиляции с сохранением корректности. В мануале CMU написано, почему так сделано. Если следовать стандарту CL и просто оптимизировать компиляцию, программа будет сегфолтиться, и это отвращает от деклараций типов. В CMU сделали костыль, добавляя assert-ы.