Mul*_*mer 2 scheme functional-programming racket
我是初学者Scheme程序员,我想丰富我在函数式编程方面的知识.我在DrRacket IDE中编程.最近我发现了一些有趣的代码:
(car ''(a b))
Run Code Online (Sandbox Code Playgroud)
输出:
'quote
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释我为什么以这种方式进行评估?
这是因为'它的缩写(quote ...).所以,
(car ''(a b))
实际上是
(car (quote (quote (a b))))
评估结果为:
'quote
正如Josh在评论中指出的那样,实际结果只是quote和REPL打印的表达式可以quote在这种情况下评估'quote或者与上面看到的相同(quote quote).
请记住'x(对于任何表达式x)只是简写(quote x),所以这段代码:
(car ''(a b))
Run Code Online (Sandbox Code Playgroud)
相当于这一个:
(car (quote (quote (a b))))
Run Code Online (Sandbox Code Playgroud)
现在很容易看出你正在评估car一个如下所示的列表:
'(quote (a b))
Run Code Online (Sandbox Code Playgroud)
哪个得到评估:
(list 'quote (list 'a 'b))
Run Code Online (Sandbox Code Playgroud)
如果我们使用car上面的行,我们将得到符号quote,这正是您看到的打印结果.
| 归档时间: |
|
| 查看次数: |
80 次 |
| 最近记录: |