Common Lisp类型说明符

时间:2012-03-13 20:17:19

标签: performance common-lisp typing

我最近开始摆弄类型说明符以提高代码效率。 This是Common Lisp标准中所有类型说明符号的列表。

我看不到穿过森林的树。

是否有人可以给出(或指向)不同类型说明符的简短描述,何时可以使用它们?

虽然我有兴趣了解所有这些,但我直接感兴趣的是数字相关类型之间的差异(fixnum,bignum,float,single-float,short-float等...)

2 个答案:

答案 0 :(得分:8)

CLtl2描述了Common Lisp在标准化之前的版本。不要将它作为参考,标准有各种不同。

使用Common Lisp Hyperspec,它基于ANSI Common Lisp Standard。

Common Lisp的类型在HyperSpec中描述:4.2.3 Type Specifiers。各种类型都是从那里链接的。

答案 1 :(得分:6)

这是一个典型的实现:

fixnum是一个适合机器寄存器的小整数;它是最快的整数

bignum是一个无限大小的整数

double-float是IEEE双精度浮点数;它也可能非常快,具体取决于您的计算机

single-float是IEEE单精度浮点数;它具有较小的范围和精度,可能比双倍慢,但占用的内存较少

short-floatlong-float通常会映射到上述两种类型,但也可能会有所不同,具体取决于您的CL实现