Первое уведомление, что в Common Lisp массив типа (array boolean)
(где BOOLEAN является применимым типа) не является массивом, который как раз случается содержать только t
с и nil
с, но массив, который может содержать только те, которые являются свойствами, которые должны быть указаны во время создания массива. Нарушение этого приведет к ошибке во время выполнения или неопределенному поведению в зависимости от вашего уровня safety
.
Я не думаю, что есть указание указать тип на уровне функции, так как я не верю, что есть какая-либо применимая оптимизация. Вы можете использовать bit-vectors, которые, по крайней мере, плотно упакованы и позволяют использовать инструкции быстрой обработки бит. То есть, если ваши данные представлены в одном измерении, так как я не уверен, насколько они применимы к многомерным массивам (array bit)
.
Многомерные массивы с типом '(mod 2) отлично работают как многомерные битовые массивы. –