www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

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:
Mmain.rkt | 11++---------
Mprivate/unsafe.rkt | 31++-----------------------------
Mtest/test-vector.rkt | 3++-
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