我正在经历htdp并在一开始就找到了这个: -
解释为什么以下句子是非法定义: 1.(定义(f'x)x)
但是,它在球拍中工作正常:
> (define (f 'x) x)
> (f 'a)
3
> (define a 5)
> (f a)
3
显然,我错过了什么......到底是什么?
答案 0 :(得分:12)
简短回答:你不应该使用完整的“#lang racket”语言。教学语言消除了您遇到的语言可能令人困惑的高级功能。
在这种情况下,你的定义被解释为一个名为f的函数,带有一个名为quote的可选参数,其默认值由'x'提供。
将语言级别设置为Beginning Student,您将获得更合理的答案。
答案 1 :(得分:0)
这一行不在Racket中为我工作:(define (f 'x) x)
。报告的错误是define: not an identifier for procedure argument in: (quote x)
。
您使用的是哪种语言?你试图在交互窗口中运行上面的那行吗?