2.4.11 Тип bool-vector

bool-vector — это одномерный массив, элементы которого должны быть либо t, либо nil.

Печатное представление bool-vector похоже на строку, за исключением того, что она начинается со знака ‘#&’, за которым следует длина. Строковый констант, который следует далее, фактически указывает содержимое bool-vector в виде битовой карты — каждый символ в строке содержит 8 бит, которые определяют следующие 8 элементов bool-vector (1 означает t, а 0 означает nil). Наименее значащие биты символа соответствуют наименьшим индексам в bool-vector.

(make-bool-vector 3 t)
     ⇒ #&3"^G"
(make-bool-vector 3 nil)
     ⇒ #&3"^@"

Эти результаты имеют смысл, потому что двоичный код для ‘C-g’ — это 111, а ‘C-@’ — это символ с кодом 0.

Если длина не кратна 8, печатное представление показывает дополнительные элементы, но эти дополнительные элементы на самом деле не имеют значения. Например, в следующем примере два bool-vector равны, потому что используются только первые 3 бита:

(equal #&3"\377" #&3"\007")
     ⇒ t