错误声明 (Misdeclarations)
第十三章解释了如何给变量及数据结构做类型声明。通过给变量做类型声明,你保证变量只会包含某种类型的值。当产生代码时,Lisp 编译器会依赖这个假定。举例来说,这个函数的两个参数都声明为 double-floats
,
(defun df* (a b)
(declare (double-float a b))
(* a b))
因此编译器在产生代码时,被授权直接将浮点乘法直接硬连接 (hard-wire)到代码里。
如果调用 df*
的参数不是声明的类型时,可能会捕捉一个错误,或单纯地返回垃圾。在某个实现里,如果我们传入两个定长数,我们获得一个硬体中断:
> (df* 2 3)
Error: Interrupt.
如果获得这样严重的错误,通常是由于数值不是先前声明的类型。
当前内容版权归 readthedocs 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 readthedocs .