bool-vectorはvectorと非常によく似ていますが、tとnilの値のみを格納する点が異なります。bool-vectorの要素にnil以外の値を格納しようとすると、代わりにtが格納されます。すべての配列と同様に、bool-vectorのインデックスは0から始まり、一度作成されると長さを変更することはできません。bool-vectorは評価時に定数となります。
いくつかの関数は bool-vector 専用に動作しますが、それ以外については、他の種類の配列で使用するのと同じ関数で操作します。
length個の要素からなる新しいbool型ベクトルを返し、各要素はinitialで初期化されているものとする。
この関数は、引数を要素とする bool 型のベクトルを作成し、返します。objects。
object が bool-vector の場合は t
を、それ以外の場合は nil を返します。
また、以下に説明するbool-vectorの集合演算関数もいくつか用意されています。
bool型ベクトル a と b のビット単位の排他的論理和を返します。オプション引数 c が指定された場合、この演算結果は c に格納されます。すべての引数は、同じ長さのbool型ベクトルである必要があります。
bool型ベクトル a と b の ビット単位の論理和 を返します。オプション引数 c が指定された場合、この演算結果は c に格納されます。すべての引数は、同じ長さのbool型ベクトルである必要があります。
bool型ベクトル a と b のビット単位の論理積を返します。オプション引数 c が指定された場合、この演算結果は c に格納されます。すべての引数は、同じ長さのbool型ベクトルである必要があります。
bool型ベクトル a と b の差集合を返します。オプション引数 c が指定された場合、この演算結果は c に格納されます。すべての引数は、同じ長さのbool型ベクトルである必要があります。
bool型ベクトル a の集合補集合を返します。オプション引数 b が指定された場合、この演算の結果は b に格納されます。すべての引数は、同じ長さのbool型ベクトルである必要があります。
a 内のすべての t の値が b においても t であれば t を、そうでなければ nil
を返します。すべての引数は、同じ長さの bool ベクトルである必要があります。
i から始まる a の連続する要素のうち、b と等しいものの個数を返します。a
はブール型ベクトル、b は t または nil、i は a のインデックスです。
bool型ベクトル a 内で t
となる要素数を返してください。
印刷形式では、最大8つのブール値を1文字で表現します:
(bool-vector t nil t nil)
⇒ #&4"^E"
(bool-vector)
⇒ #&0""
vconcat を使えば、他のベクトルと同様に bool-vector を出力できます:
(vconcat (bool-vector nil t nil t))
⇒ [nil t nil t]
bool-vectorの作成、確認、更新を行う別の例を以下に示します。
(setq bv (make-bool-vector 5 t))
⇒ #&5"^_"
(aref bv 1)
⇒ t
(aset bv 3 nil)
⇒ nil
bv
⇒ #&5"^W"
control-_ と control-W の2進コードがそれぞれ 11111 と 10111 であるため、これらの結果は妥当である。