diff --git a/pkgs/racket-doc/scribblings/reference/vectors.scrbl b/pkgs/racket-doc/scribblings/reference/vectors.scrbl index 0441d27ecb..a018bb893b 100644 --- a/pkgs/racket-doc/scribblings/reference/vectors.scrbl +++ b/pkgs/racket-doc/scribblings/reference/vectors.scrbl @@ -30,6 +30,9 @@ a number between the @litchar{#} and Returns @racket[#t] if @racket[v] is a vector, @racket[#f] otherwise.} +@defproc[(vector-empty? [v vector?]) boolean?]{ + +Returns @racket[#t] if @racket[v] is empty (i.e. its length is 0), @racket[#f] otherwise.} @defproc[(make-vector [size exact-nonnegative-integer?] [v any/c 0]) vector?]{ diff --git a/pkgs/racket-test-core/tests/racket/vector.rktl b/pkgs/racket-test-core/tests/racket/vector.rktl index b6cb2e19ac..16dbe82960 100644 --- a/pkgs/racket-test-core/tests/racket/vector.rktl +++ b/pkgs/racket-test-core/tests/racket/vector.rktl @@ -61,6 +61,12 @@ (err/rt-test (vector-fill! '(1 2 3) 0)) +;; ---------- vector-empty? ---------- +(test #f vector-empty? '#(a)) +(test #f vector-empty? '#(())) +(test #f vector-empty? '#(#())) +(test #t vector-empty? '#()) + ;; ---------- vector-take/drop[-right] ---------- (let () diff --git a/racket/collects/racket/vector.rkt b/racket/collects/racket/vector.rkt index 640ef86599..9e21a3ddba 100644 --- a/racket/collects/racket/vector.rkt +++ b/racket/collects/racket/vector.rkt @@ -1,6 +1,7 @@ #lang racket/base -(provide vector-set*! vector-copy vector-map vector-map! vector-append +(provide vector-empty? vector-set*! vector-copy + vector-map vector-map! vector-append vector-take vector-drop vector-split-at vector-take-right vector-drop-right vector-split-at-right vector-filter vector-filter-not @@ -11,7 +12,12 @@ (for-syntax racket/base) (rename-in (except-in "private/sort.rkt" sort) [vector-sort! raw-vector-sort!] - [vector-sort raw-vector-sort])) + [vector-sort raw-vector-sort])) + +(define (vector-empty? v) + (unless (vector? v) + (raise-argument-error 'vector-empty? "vector?" v)) + (zero? (vector-length v))) (define (vector-set*! v . pairs) (unless (even? (length pairs))