Differences From
Artifact [7cd42aa5f2]:
82 82 `((: ,name (#!rest (or symbol ,@(uniq types)) --> ,name ))
83 83 (define (,name . args)
84 84 (define (safe-vector-ref v i) (if (null? v) (error "all struct fields need to be specified unless functional record update syntax is in use")
85 85 (vector-ref v i)))
86 86 (let* ([basis (if (,(symsuf name "?") (car args)) (cdar args) '())]
87 87 [spec (if (null? basis) args (cdr args))])
88 88 (cons (quote ,typesym)
89 - (vector ,@(reduce-flds 0 fields)
90 -
91 - ))))))
89 + (vector ,@(reduce-flds 0 fields)))))))
92 90
93 91 (let* ([name (car body)]
94 92 [fields (cdr body)]
95 93 [typesym (gensym)]
96 94 [types (map extract-type fields)])
97 95 (append (emit-pred name typesym)
98 96 (emit-def name types)
99 97 (emit-gen name types typesym fields)
100 98 (reduce-fields name 0 fields))))