ブールベクター(bool-vector)は、要素がt
かnil
のいずれかでなければならない1次元の配列です。
ブールベクターのプリント表現は文字列と似ていますが、後に長さを記述した‘#&’で始まります。これに続く文字列定数は、ビットマップとして実際に内容を指定するブールベクターです
—
文字列定数内のそれぞれの“文字”は8ビットを含み、これはブールベクターの次の8要素を指定します(1はt
、0はnil
です)。文字の最下位ビットが、ブールベクターの最下位のインデックスに対応しています。
(make-bool-vector 3 t) ⇒ #&3"^G" (make-bool-vector 3 nil) ⇒ #&3"^@"
‘C-g’の2進コードは111、‘C-@’はコード0の文字なのでこの結果は理にかなっています。
長さが8の倍数でなければプリント表現には余分な要素が表示されますが、これらの余分な要素に意味はありません。たとえば以下の例では、最初の3ビットだけが使用されるので2つのブールベクターは等価です:
(equal #&3"\377" #&3"\007") ⇒ t