#lang typed/racket/base (module+ test (require trivial/vector typed/rackunit) (require/typed (for-template trivial/vector) (parse-vector-length (-> Syntax (Option Natural)))) ;; -- parse-vector-length ;; --- '# (check-equal? (parse-vector-length #'#()) 0) ; (check-equal? ; (parse-vector-length #`#,'#(1 2)) ; 2) (check-equal? (parse-vector-length #'#(1 2 3 4)) 4) (check-equal? (parse-vector-length #'#(a b c e s aue d al)) 8) ;; --- vector (check-equal? (parse-vector-length #'(vector)) 0) (check-equal? (parse-vector-length #'(vector 0 1)) 2) ;; --- make-vector (check-equal? (parse-vector-length #'(make-vector -1 1)) #f) (check-equal? (parse-vector-length #'(make-vector 0 8)) 0) (check-equal? (parse-vector-length #'(make-vector 3 3)) 3) (check-equal? (parse-vector-length #'(make-vector 99)) 99) ;; --- build-vector (check-equal? ;; Type error (parse-vector-length #'(build-vector -1)) #f) (check-equal? (parse-vector-length #'(build-vector 0 (lambda (x) x))) 0) (check-equal? (parse-vector-length #'(build-vector 3 (lambda (x) 8))) 3) (check-equal? (parse-vector-length #'(build-vector 61 add1)) 61) ;; -- vector-length: ;; -- define-vector: (let () (define-vector: v (vector 1 1 2 2)) (check-equal? (vector-ref: v 0) 1)) ;; -- let-vector: )