为什么Scheme有列表和引用?

drb*_*drb 11 scheme

由于(列表1 2 3)收益率(1 2 3)和(报价(1 2 3))收益率(1 2 3),两者的基本原理是什么?

由于Scheme是如此多余,所以这些必须有一些有意义的区别.那是什么?

sep*_*p2k 27

在您提到的示例中,quote并且list具有相同的结果,因为数字常量会自行计算.如果您使用列表中没有自我评估的表达式(比如变量或函数调用),您将看到区别:

(quote (a b c))会给你一个包含符号列表a,bc同时(list a b c)会给你包含变量的值的列表a,b以及c(或者一个错误,如果不存在的变量).


use*_*810 5

List创建一个列表,因此(list 1 2 3)创建一个三元素列表.

报价阻止评估.没有引号,表达式(1 2 3)将被评估为使用参数2和3调用的函数1,这显然没有意义.引号会阻止评估,只返回列表,该列表在字面上以外部可打印格式指定为(1 2 3).