diff --git a/main.rkt b/main.rkt index 62ca104..caf56cb 100644 --- a/main.rkt +++ b/main.rkt @@ -3,18 +3,11 @@ (require typed/racket/unsafe) (provide IVectorof - IVectorof2 - (rename-out [new-ivector ivector]) - (rename-out [new-ivector2 ivector2]) - ivector2-v) + (rename-out [new-ivector ivector])) (unsafe-require/typed tr-immutable/private/unsafe [#:struct (A) ivector ([v : (Listof A)]) - #:type-name IVectorof] - [#:struct (A) ivector2 ([v : (Listof A)]) - #:constructor-name make-ivector2 - #:type-name IVectorof2] - [new-ivector2 (∀ (A) (→ A * (IVectorof2 A)))]) + #:type-name IVectorof]) (: new-ivector (∀ (A) (→ A * (IVectorof A)))) (define (new-ivector . vs) diff --git a/private/unsafe.rkt b/private/unsafe.rkt index edbfa40..c5fe8dc 100644 --- a/private/unsafe.rkt +++ b/private/unsafe.rkt @@ -2,31 +2,5 @@ ;; TODO: make this a vector in the implementation, but make TR think it's a ;; list (via a contract?) -(provide (struct-out ivector) - ;(struct-out ivector2) - ivector2 - ivector2? - struct:ivector2 - (rename-out [vector->list ivector2-v]) - (rename-out [list->vector make-ivector2]) - (rename-out [vector new-ivector2])) -(define insp (make-inspector)) -(struct ivector (v) #:mutable - #:inspector insp) - -;;;;;;;;;;;;; -(require (for-syntax racket/base - racket/struct-info)) - -(define (ivector2? v) (and (vector? v) (immutable? v))) - -(define struct:ivector2 #f) -(define-syntax ivector2 - (make-struct-info - (λ () - (list #f - #'list->vector - #'ivector2? - (list #'vector->list) - (list #f) - #t)))) \ No newline at end of file +(provide (struct-out ivector)) +(struct ivector (v) #:mutable) diff --git a/test/test-vector.rkt b/test/test-vector.rkt index caa8a9a..6b5dc51 100644 --- a/test/test-vector.rkt +++ b/test/test-vector.rkt @@ -2,4 +2,4 @@ (require tr-immutable typed/rackunit) -(check-pred (make-predicate (IVectorof Positive-Byte)) (ivector 1 2 3)) +(check-pred (make-predicate (IVectorof Positive-Byte)) (ivector 1 2 3)) \ No newline at end of file