Я читаю SICP 4.1.3 Структуры данных оценщика
(define (make-frame variables values)
(cons variables values))
(define (frame-variables frame) (car frame))
(define (frame-values frame) (cdr frame))
(define (add-binding-to-frame! var val frame)
(set-car! frame (cons var (car frame)))
(set-cdr! frame (cons val (cdr frame))))
Тем не менее, set-car!
сообщается как неограниченный в ракетке.
Затем опробовал навесное оборудование «GNU Guile 2.2.6», «GNU mit-схема 10.1.10», к сожалению, set-car!
все не связаны.
Поиск по всей книге оригинальной версии:
find . -type f -iname "*.org" -exec grep --color -nH --null -e "set-car!" \{\} + |wc -l
27
В главе 3 4 и 5 есть 27 случаев,
и в главе 3 я меняю setcar! установить машину Элисп. но elisp не является хорошим вариантом для главы 4 металингвистики c абстракция.
Глава 4 немного сложна, поэтому теперь риск приключений.
Я нашел хорошее решение set-car !, set-cdr! unbound in racket?
(require rnrs/mutable-pairs-6)
Как решение: если заменить set-car!
set-cdr!
на set-mcar!
set-mcdr
, коды глав 4 и 5 будут работать без проблем при реализации ракетки?