绑定标识符 - DrRacket

问题描述:

我学习方案,并为实例和实践metacircular解释工作,和我收到以下错误:绑定标识符 - DrRacket

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

检查这个问题,它可以帮助http://*.com/q/9475366/1197333 – Ivancho 2014-11-21 18:15:47

+1

#球拍(完全不同的语言比计划)不是!有'set-car!'和'set-cdr!'。改用#!r6rs。 – Sylwester 2014-11-21 18:18:37

在球拍由cons分配的一对是不可变的设计 - 因此没有set-car!。要分配可变对,请使用mcons。要突变可变对,请使用set-mcar!set-mcdr!

这是一个完整的程序:

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

进行了相应的更改,并且仍然收到相同的错误。尽管谢谢你的回答。 – choloboy 2014-11-21 18:52:00

+1

我已经添加了一个完整的程序。请注意,mcons,mcar,mcdr,set-mcar!和set-mcdr由球拍/底座输出。如果您正在使用一种语言,使用(要求(仅限 - 在球拍/基础mcons mcar mcdr set-mcar!set-mcdr!)),其中可变版本从一开始就不包括在内。 – soegaard 2014-11-21 18:58:43