2012-03-13 132 views
5

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

我看不见森林里的树。

任何人都可以(或指向)不同类型说明符的简短描述,以及何时使用它们?

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

+0

应该指出,指定类型不应该是提高性能的第一步。通常这些都不是必需的,除了计算量大的紧密环路外。 – hajovonta 2017-04-23 04:37:36

回答

8

CLtl2在标准化之前描述了Common Lisp的一个版本。不要用它作为参考,这个标准有很多不同之处。

使用基于ANSI Common Lisp Standard的Common Lisp Hyperspec。

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

+0

太棒了!谢谢! – mck 2012-03-13 20:51:46

6

这里是一个典型的实现:

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

bignum是无限大小的整

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

single-float是一个IEEE单精度浮点数;它具有较小的范围和精度,并且可以比双慢,但需要较少的存储器

short-floatlong-float通常映射到上述两种类型,但是也可以是不同的,再次,这取决于你CL实施

+0

非常有用,谢谢! – mck 2012-03-13 20:52:49