Fix handling of mutable structs (setters != getters)
Allow use of #:mutable as define-typed-struct arg Fix types of random andmap ormap original commit: 2456dcc18b10a10a7bad3b1f9af8e33fad03231f
This commit is contained in:
parent
5a2792932f
commit
d77d7ba57f
|
@ -105,8 +105,8 @@
|
|||
[read (cl->
|
||||
[(-Port) -Sexp]
|
||||
[() -Sexp])]
|
||||
[ormap (-polydots (a b) (->... (list (->... (list a) (b b) B) (-lst a)) ((-lst b) b) B))]
|
||||
[andmap (-polydots (a b) (->... (list (->... (list a) (b b) B) (-lst a)) ((-lst b) b) B))]
|
||||
[ormap (-polydots (a c b) (->... (list (->... (list a) (b b) c) (-lst a)) ((-lst b) b) c))]
|
||||
[andmap (-polydots (a c b) (->... (list (->... (list a) (b b) c) (-lst a)) ((-lst b) b) c))]
|
||||
[newline (cl-> [() -Void]
|
||||
[(-Port) -Void])]
|
||||
[not (-> Univ B)]
|
||||
|
@ -256,8 +256,8 @@
|
|||
[(-Pathlike (-> a) Sym) a]))]
|
||||
|
||||
[random (cl->
|
||||
[(N) N]
|
||||
[() N])]
|
||||
[(-Integer) -Integer]
|
||||
[() -Integer])]
|
||||
|
||||
[assoc (-poly (a b) (a (-lst (-pair a b)) . -> . (-opt (-pair a b))))]
|
||||
[assf (-poly (a b)
|
||||
|
|
|
@ -305,10 +305,13 @@ This file defines two sorts of primitives. All of them are provided into any mod
|
|||
(define-syntax (define-typed-struct stx)
|
||||
(syntax-case stx (:)
|
||||
[(_ nm ([fld : ty] ...) . opts)
|
||||
(with-syntax ([d-s (syntax-property (syntax/loc stx (define-struct nm (fld ...) . opts))
|
||||
'typechecker:ignore #t)]
|
||||
[dtsi (internal (syntax/loc stx (define-typed-struct-internal nm ([fld : ty] ...))))])
|
||||
#'(begin d-s dtsi))]
|
||||
(let ([mutable (if (memq '#:mutable (syntax->datum #'opts))
|
||||
'(#:mutable)
|
||||
'())])
|
||||
(with-syntax ([d-s (syntax-property (syntax/loc stx (define-struct nm (fld ...) . opts))
|
||||
'typechecker:ignore #t)]
|
||||
[dtsi (internal (quasisyntax/loc stx (define-typed-struct-internal nm ([fld : ty] ...) #,@mutable)))])
|
||||
#'(begin d-s dtsi)))]
|
||||
[(_ (vars ...) nm ([fld : ty] ...) . opts)
|
||||
(with-syntax ([d-s (syntax-property (syntax/loc stx (define-struct nm (fld ...) . opts))
|
||||
'typechecker:ignore #t)]
|
||||
|
|
Loading…
Reference in New Issue
Block a user