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