2
我有一个非常大的数组,只有nil
s和t
s。数组的类型声明
我的问题是;编译器在处理这种特定类型的数组的函数中进行类型声明是否合理?如果是的话,宣言应该是什么样子?
例如:
(defun foo(my-array)
(declare (type (array ?????) my-array))
....
我有一个非常大的数组,只有nil
s和t
s。数组的类型声明
我的问题是;编译器在处理这种特定类型的数组的函数中进行类型声明是否合理?如果是的话,宣言应该是什么样子?
例如:
(defun foo(my-array)
(declare (type (array ?????) my-array))
....
首先注意Common Lisp中(array boolean)
型(其中BOOLEAN是适用的类型)的阵列不是正好仅包含t
S和nil
秒的阵列,但一个只能包含这些数组的数组,这是一个必须在创建数组期间指定的属性。违反此规则将导致运行时错误或未定义的行为,具体取决于您的safety
级别。
我不认为在功能级别指定类型没有多大意义,因为我不相信有任何适用的优化。您可能会考虑使用bit-vectors,它们至少紧密排列并允许使用快速位处理指令。也就是说,如果你的数据可以在一维中表示,因为我不确定这些数据适用于多维数组。
类型为'(mod 2)的多维数组很适合用作多维位数组。 – 2012-02-27 20:08:36