17

Pythonには関数があり、リストのすべてまたは一部の要素がそれぞれtrueの場合、それらはtrueを返しますallanyCommon Lispに同等の機能はありますか?そうでない場合、それらを書くための最も簡潔で慣用的な方法は何ですか?

現在私はこれを持っています:

(defun all (xs)
  (reduce (lambda (x y) (and x y)) xs :initial-value t))

(defun any (xs)
  (reduce (lambda (x y) (or x y)) xs :initial-value nil))
4

2 に答える 2

31

Common Lispでは、every(と同等all)とsome(と同等any)を使用します。

于 2012-12-18T19:34:49.423 に答える
6

LOOP マクロは、次のようALWAYSTHEREIS句とともに使用できます。

CL-USER 1 > (loop for item in '(nil nil nil) always item)
NIL

CL-USER 2 > (loop for item in '(nil nil t) always item)
NIL

CL-USER 3 > (loop for item in '(t t t) always item)
T

CL-USER 4 > (loop for item in '(nil nil nil) thereis item)
NIL

CL-USER 5 > (loop for item in '(nil nil t) thereis item)
T

CL-USER 6 > (loop for item in '(t t t) thereis item)
T
于 2012-12-18T19:44:31.487 に答える