diff --git a/collects/racket/sequence.rkt b/collects/racket/sequence.rkt index 6e420a43a1..e230be6f43 100644 --- a/collects/racket/sequence.rkt +++ b/collects/racket/sequence.rkt @@ -120,7 +120,8 @@ (lambda () (let loop ([next (lambda () (sequence-generate* s))]) (let-values ([(vals next) (next)]) - (if (apply f vals) + (if (or (not vals) + (apply f vals)) (values (lambda (v+n) (apply values (car v+n))) (lambda (v+n) (let loop ([next (cdr v+n)]) diff --git a/collects/tests/racket/sequence.rktl b/collects/tests/racket/sequence.rktl index a03bd95bd2..17e9b54b0a 100644 --- a/collects/tests/racket/sequence.rktl +++ b/collects/tests/racket/sequence.rktl @@ -97,6 +97,7 @@ (arity-test sequence-filter 2 2) (err/rt-test (sequence-filter 2 (in-naturals)) exn:fail?) (test 4 'sequence-filter (sequence-ref (sequence-filter even? (in-naturals)) 2)) + (test 0 sequence-length (sequence-filter (thunk* #t) empty-sequence)) (arity-test sequence-add-between 2 2) (test 0 'sequence-add-between