Когда я определяю функцию в Common Lisp следующим образом:
(defun foo (n)
(declare (type fixnum n))
(+ n 42))
Я ожидал, что такой вызов, как (foo "a")
, сразу же потерпит неудачу, но вместо этого он потерпит неудачу при вызове +
. Разве форма declare
не гарантирует статическую проверку типов?