File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 12661266; http: //arclanguage.org/item?id=13616
12671267(require racket/unsafe/ops)
12681268
1269- (define (set-ca/dr! offset who p x)
1270- (if (pair? p)
1271- (unsafe-vector-set! p offset x)
1272- (raise-type-error who "pair" p)))
1273-
1274- (define (n-set-car! p x)
1275- (set-ca/dr! -1 'set-car! p x))
1276- (define (n-set-cdr! p x)
1277- (set-ca/dr! 0 'set-cdr! p x))
1278-
12791269(define x-set-car!
12801270 (let ((fn (namespace-variable-value 'set-car! #t (lambda () #f))))
12811271 (if (procedure? fn)
12821272 fn
1283- n-set-car!)))
1273+ (lambda (p x)
1274+ (if (pair? p)
1275+ (unsafe-set-mcar! p x)
1276+ (raise-type-error 'set-car! "pair" p))))))
12841277
12851278(define x-set-cdr!
12861279 (let ((fn (namespace-variable-value 'set-cdr! #t (lambda () #f))))
12871280 (if (procedure? fn)
12881281 fn
1289- n-set-cdr!)))
1282+ (lambda (p x)
1283+ (if (pair? p)
1284+ (unsafe-set-mcdr! p x)
1285+ (raise-type-error 'set-cdr! "pair" p))))))
12901286
12911287; When and if cdr of a string returned an actual (eq) tail, could
12921288; say (if (string? x) (string-replace! x val 1) ...) in scdr, but
You can’t perform that action at this time.
0 commit comments