Scheme 正确列表:在方案列表中隐藏()
在Scheme中,使用Scheme 正确列表:在方案列表中隐藏(),scheme,racket,Scheme,Racket,在Scheme中,使用list定义一个列表可以确保结果是一个正确的列表,这意味着它的最终元素是一个列表() 如果定义了测试列表: (define test (list 27 3)) 并且取列表的长度,Racket说它是2。当一个打印列表时,它只显示(27 3),而不显示() 但是,如果接受(rest(rest测试)),则会出现()。执行(列表参考测试2)会产生错误 如果()在cdr遍历元素时显示为列表中的第三个元素,为什么不将其视为列表的成员 这会不会造成方案中正确列表和不正确列表之间的混淆
list
定义一个列表可以确保结果是一个正确的列表,这意味着它的最终元素是一个列表()
如果定义了测试列表:
(define test (list 27 3))
并且取列表的长度
,Racket说它是2。当一个打印列表时,它只显示(27 3)
,而不显示()
但是,如果接受(rest(rest测试))
,则会出现()
。执行(列表参考测试2)
会产生错误
如果()
在cdr
遍历元素时显示为列表中的第三个元素,为什么不将其视为列表的成员
这会不会造成方案中正确列表和不正确列表之间的混淆 列表是一条成对的链。元素是每对的car
s,每对的cdr
是链中下一对的参考
正确列表的最后一对的cdr
是对特殊()
对象的引用,该对象表示空列表。它不是列表中的一个元素,因为它在cdr
中,而不是car
中
rest
函数返回一对的cdr
。所以(rest(rest-test))
返回第二个cdr
,它是()
,因为它在列表的末尾
不正确的列表不会造成混淆。不正确的列表中除了()
之外,还有其他内容作为链中最后一对的cdr
。列表是一个对链。元素是每对的car
s,每对的cdr
是链中下一对的参考
正确列表的最后一对的cdr
是对特殊()
对象的引用,该对象表示空列表。它不是列表中的一个元素,因为它在cdr
中,而不是car
中
rest
函数返回一对的cdr
。所以(rest(rest-test))
返回第二个cdr
,它是()
,因为它在列表的末尾
不正确的列表不会造成混淆。不正确的列表具有链中最后一对的cdr
以外的内容