Vl-every

提供:GizmoLabs - だいたい CAD LISP なサイト
2009年10月21日 (水) 13:42時点におけるGizmon (トーク | 投稿記録)による版
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
構文
(vl-every predicate-function list [list]...)
機能
すべての要素の組み合わせに対してテスト結果が真かどうかをチェックする。
引数
  • predicate-function : テスト関数。
vl-every 関数に提供されるリストと同じ数の引数を受け入れ、ユーザが指定した任意の条件で T を返す任意の関数を指定できる。predicate-function 引数の値は、次の形式のいずれかが指定可能。
シンボル(関数名)
'(LAMBDA (A1 A2) ...)
(FUNCTION (LAMBDA (A1 A2) ...))
  • list : テストするリスト。
戻り値
predicate-function が、すべての要素の組み合わせに対して nil 以外の値を返した場合は T。
それ以外の場合は nil。


サンプル
現在のフォルダに空のファイルが存在するかどうかチェック。
(vl-every
'(lambda (fnm) (> (vl-file-size fnm) 0))
(vl-directory-files nil nil 1) )
T
---
NLST 内の数値のリストが '<= によって整列されているかどうかをチェック。
(setq nlst (list 0 2 pi pi 4))
(0 2 3.14159 3.14159 4)
(vl-every '<= nlst (cdr nlst))
T
---
結果の比較。
(vl-every '= '(1 2) '(1 3))
nil
(vl-every '= '(1 2) '(1 2 3))
T
  • 上記の例で最初の式が nil を返すのは、vl-every 関数が各リストの第 2 要素を比較し、それらが数値的に等しくないから。 2 番目の式が T を返すのは、短い方のリスト(1 2)のすべての要素を処理した後、vl-every 関数は要素の比較を中止するが、その時点でリストが数値的に等しい。リストの終端に達すると、vl-every 関数は nil 以外の値を返す。
---
次の例は、一方が整数を含み他方が nil であるリストを vl-every 関数が評価したときの結果を示している。
(setq alist (list 1 2 3 4))
(1 2 3 4)
(setq junk nil)
nil
(vl-every '= junk alist)
T
  • 戻り値が T となるのは、vl-every 関数が nil リストに対して、リストの終端に達したのと同じように応答するから(たとえテストに要素がまったく割り当てられていなくても)。上記の場合も、リストの終端に達したことになり、vl-every 関数は nil 以外の値を返す。