既然(列表1 2 3)产生(1 2 3)和(引用(1 2 3))产生(1 2 3),那么同时拥有两者的理由是什么?
因为Scheme在其他方面是如此的空闲,所以它们一定有一些有意义的区别。那是什么?
发布于 2012-01-25 23:04:53
在您提到的示例中,quote和list具有相同的结果,因为数值常量的计算结果为自身。如果您在列表中使用非自评估的表达式(例如变量或函数调用),您将看到差异:
(quote (a b c))将为您提供一个包含符号a、b和c的列表,而(list a b c)将为您提供一个包含变量a、b和c的值的列表(如果变量不存在,则会出现错误)。
发布于 2012-01-25 23:04:34
list创建一个列表,因此(list 1 2 3)创建一个由三个元素组成的列表。
报价阻止评估。如果没有引号,表达式(1 2 3)将被计算为使用参数2和3调用的函数1,这显然没有意义。Quote阻止求值,只返回列表,该列表在其外部可打印形式中按字面意思指定为(1 2 3)。
https://stackoverflow.com/questions/9004786
复制相似问题