模块中的未绑定标识符 - DrRacket

时间:2014-11-21 18:11:52

标签: scheme lisp racket

我正在学习计划并使用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函数吗?

1 个答案:

答案 0 :(得分:1)

在Racket中,由cons分配的对在设计上是不可变的 - 因此没有set-car!。要分配可变对,请使用mcons。要改变可变对,请使用set-mcar!set-mcdr!

这是一个完整的程序:

#lang racket
(define p (mcons 1 2))
(set-mcar! p 3)
p