diff --git a/racket/collects/racket/sequence.rkt b/racket/collects/racket/sequence.rkt index cd68cd305c..128d71cd17 100644 --- a/racket/collects/racket/sequence.rkt +++ b/racket/collects/racket/sequence.rkt @@ -41,8 +41,11 @@ (define (sequence-length s) (unless (sequence? s) (raise-argument-error 'sequence-length "sequence?" s)) - (for/fold ([c 0]) ([i (in-values*-sequence s)]) - (add1 c))) + (cond [(vector? s) (vector-length s)] + [(hash? s) (hash-count s)] + [else + (for/fold ([c 0]) ([i (in-values*-sequence s)]) + (add1 c))])) (define (sequence-ref s i) (unless (sequence? s) (raise-argument-error 'sequence-ref "sequence?" s))