为什么这个合法(球拍)计划?

时间:2012-03-08 02:25:06

标签: syntax scheme racket

我正在经历htdp并在一开始就找到了这个: -

  

解释为什么以下句子是非法定义:   1.(定义(f'x)x)

但是,它在球拍中工作正常:

> (define (f 'x) x)
> (f 'a)
3
> (define a 5)
> (f a)
3

显然,我错过了什么......到底是什么?

2 个答案:

答案 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)

您使用的是哪种语言?你试图在交互窗口中运行上面的那行吗?