我最近开始摆弄类型说明符以提高代码效率。 This是Common Lisp标准中所有类型说明符号的列表。
我看不到穿过森林的树。
是否有人可以给出(或指向)不同类型说明符的简短描述,何时可以使用它们?
虽然我有兴趣了解所有这些,但我直接感兴趣的是数字相关类型之间的差异(fixnum,bignum,float,single-float,short-float等...)
答案 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-float
和long-float
通常会映射到上述两种类型,但也可能会有所不同,具体取决于您的CL实现