Fix n-ary case of every.

Patch from A. Lozovsky fixing issue #216.
This commit is contained in:
Alex Shinn 2014-04-19 07:25:57 +09:00
parent 48f075528c
commit 926785804d
2 changed files with 4 additions and 1 deletions

View file

@ -89,7 +89,7 @@
(if (pred (car ls)) (every1 pred (cdr ls)) #f)))
(if (null? lol)
(if (pair? ls) (every1 pred ls) #t)
(not (apply any (lambda (x) (not (pred x))) ls lol))))
(not (apply any (lambda xs (not (apply pred xs))) ls lol))))
(define (error msg . args)
(raise (make-exception 'user msg args #f #f)))

View file

@ -106,6 +106,9 @@
;(test-error (find even? (circular-list 1 3))) ; divergent
;(test-error (any even? (circular-list 1 3))) ; divergent
(test '4 (find even? '(3 1 4 1 5 9)))
(test '#f (every odd? '(1 2 3)))
(test '#t (every < '(1 2 3) '(4 5 6)))
(test-error (every odd? '(1 3 . x)))
(test '(-8 -5 0 0) (find-tail even? '(3 1 37 -8 -5 0 0)))
(test '#f (find-tail even? '(3 1 37 -5)))
(test '(2 18) (take-while even? '(2 18 3 10 22 9)))