通用Lisp类型说明符

5
我最近开始尝试使用类型说明符以提高代码效率。在Common Lisp标准中,此处列出了所有的类型说明符符号。
我看不清楚整体的情况。
有人能否给出(或指向)一份不同类型说明符的简短描述,以及何时应该使用它们?
虽然我对所有类型说明符都很感兴趣,但我直接关注数字相关类型之间的区别(fixnum、bignum、float、single-float、short-float等)。

需要注意的是,在提高性能方面,指定类型不应该是第一步。通常情况下,除了那些计算量较大的紧密循环之外,这些并不是必需的。 - hajovonta
2个回答

8

CLtl2描述了一种Common Lisp的版本,在标准化之前使用。不要将其用作参考,它与标准有各种差异。

请使用基于ANSI Common Lisp标准的Common Lisp Hyperspec。

Common Lisp的类型在HyperSpec中描述,链接如下:4.2.3类型说明符。各种类型从那里链接。


6
以下是一个典型的实现: fixnum是适合机器寄存器的小整数,速度最快。 bignum是无限大小的整数。 double-float是IEEE双精度浮点数;根据你的计算机,它也可能非常快。 single-float是IEEE单精度浮点数;它的范围和精度比双精度浮点数低,但占用更少的内存。 short-floatlong-float通常映射到上述两种类型之一,但也可能不同,这取决于你的CL实现。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接