GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Bool_002dVectors.html ・ emacs-doc.conao3.com

6.7 Bool-vectors

bool-vectorはvectorと非常によく似ていますが、tとnilの値のみを格納する点が異なります。bool-vectorの要素にnil以外の値を格納しようとすると、代わりにtが格納されます。すべての配列と同様に、bool-vectorのインデックスは0から始まり、一度作成されると長さを変更することはできません。bool-vectorは評価時に定数となります。

いくつかの関数は bool-vector 専用に動作しますが、それ以外については、他の種類の配列で使用するのと同じ関数で操作します。

関数: make-bool-vector length initial

length個の要素からなる新しいbool型ベクトルを返し、各要素はinitialで初期化されているものとする。

関数: bool-vector &rest objects

この関数は、引数を要素とする bool 型のベクトルを作成し、返します。objects。

関数: bool-vector-p object

object が bool-vector の場合は t を、それ以外の場合は nil を返します。

また、以下に説明するbool-vectorの集合演算関数もいくつか用意されています。

関数: bool-vector-exclusive-or a b &optional c

bool型ベクトル a と b のビット単位の排他的論理和を返します。オプション引数 c が指定された場合、この演算結果は c に格納されます。すべての引数は、同じ長さのbool型ベクトルである必要があります。

関数: bool-vector-union a b &optional c

bool型ベクトル a と b の ビット単位の論理和 を返します。オプション引数 c が指定された場合、この演算結果は c に格納されます。すべての引数は、同じ長さのbool型ベクトルである必要があります。

関数: bool-vector-intersection a b &optional c

bool型ベクトル a と b のビット単位の論理積を返します。オプション引数 c が指定された場合、この演算結果は c に格納されます。すべての引数は、同じ長さのbool型ベクトルである必要があります。

関数: bool-vector-set-difference a b &optional c

bool型ベクトル a と b の差集合を返します。オプション引数 c が指定された場合、この演算結果は c に格納されます。すべての引数は、同じ長さのbool型ベクトルである必要があります。

関数: bool-vector-not a &optional b

bool型ベクトル a の集合補集合を返します。オプション引数 b が指定された場合、この演算の結果は b に格納されます。すべての引数は、同じ長さのbool型ベクトルである必要があります。

関数: bool-vector-subsetp a b

a 内のすべての t の値が b においても t であれば t を、そうでなければ nil を返します。すべての引数は、同じ長さの bool ベクトルである必要があります。

関数: bool-vector-count-consecutive a b i

i から始まる a の連続する要素のうち、b と等しいものの個数を返します。a はブール型ベクトル、b は t または nil、i は a のインデックスです。

関数: bool-vector-count-population 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 であるため、これらの結果は妥当である。