我正在浏览 htdp 并在一开始的某个地方发现了这个:-
Explain why the following sentences are illegal definitions: 1. (define (f 'x) x)
但是,它在 Racket 中运行良好:
> (define (f 'x) x)
> (f 'a)
3
> (define a 5)
> (f a)
3
显然,我遗漏了一些东西......究竟是什么?
最佳答案
简短回答:您不应该使用完整的“#lang racket”语言。教学语言去除了您遇到的语言的潜在令人困惑的高级功能。
在这种情况下,您的定义被解释为一个名为 f 的函数,带有一个名为 quote 的可选参数,其默认值由 'x' 提供。
将语言级别设置为初学者,您将得到更合理的答案。
关于syntax - 为什么这是合法的( Racket )计划?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9612098/