我正在学习计划并使用metacircular翻译器进行示例和练习,我收到以下错误:
set-car!: unbound identifier in module in: set-car!
错误是由以下代码引起的:
(define (add-binding-to-frame! var val frame)
(set-car! frame (cons var (car frame)))
(set-cdr! frame (cons val (cdr frame))))
我有两个问题......首先,错误是什么意思?其次,我错过了一个let函数吗?
答案 0 :(得分:1)
在Racket中,由cons
分配的对在设计上是不可变的 - 因此没有set-car!
。要分配可变对,请使用mcons
。要改变可变对,请使用set-mcar!
和set-mcdr!
。
这是一个完整的程序:
#lang racket
(define p (mcons 1 2))
(set-mcar! p 3)
p