Тип bool-вектор
bool-вектор — это одномерный массив, элементы которого должны быть t или nil.
Печатное представление bool-вектора похоже на строку, за исключением того, что оно начинается с ‘#&’ и далее следует длина. Последующая строковая константа фактически задаёт содержимое bool-вектора как битовую карту — каждый символ в строке содержит 8 бит, которые определяют следующие 8 элементов bool-вектора (1 означает t, а 0 — nil). Самые младшие биты символа соответствуют наименьшим индексам в bool-векторе.
(make-bool-vector 3 t)
⇒ #&3"^G"
(make-bool-vector 3 nil)
⇒ #&3"^@"
Эти результаты понятны, так как двоичный код для ‘C-g’ — 111, а ‘C-@’ — символ с кодом 0.
Если длина не кратна 8, печатное представление показывает дополнительные элементы, но эти дополнительные элементы фактически не имеют значения. Например, в следующем примере два bool-вектора равны, потому что используются только первые 3 бита:
(equal #&3"\377" #&3"\007")
⇒ t
Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Bool_002dVector-Type.html