commit f77e3dcdcf8ff481dec33fa00bff8b320c0336f1
parent 513c94b991782d6ed2ddfb0d6c1fb9d33fc589e4
Author: Georges Dupéron <georges.duperon@gmail.com>
Date: Sun, 8 Jan 2017 00:04:39 +0100
Revert "Failed attempt at disguising a vector as struct using make-struct-info, struct/c (which TR uses internally in make-predicate) seems to ignore the predicate supplied to make-struct-info."
This reverts commit 513c94b991782d6ed2ddfb0d6c1fb9d33fc589e4.
Diffstat:
3 files changed, 6 insertions(+), 39 deletions(-)
diff --git 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
@@ -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
@@ -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