List 功能有限的方案列表
在Scheme中,有没有办法只使用以下功能来创建或添加列表:equal?,car,cdr,cons,cond,if,quote,+,*,null?,symbol,整数?,任何car/cdr变量,定义,让。(您会注意到,不允许使用任何#list或#append调用) 我尝试过几种不同的方法,但它只给出了像“(0.10)这样的东西,而不是理想的(0.10)。是的,这是更大任务的一部分 在Scheme中,“正确列表”以空列表结尾。因此,您可以将List 功能有限的方案列表,list,scheme,List,Scheme,在Scheme中,有没有办法只使用以下功能来创建或添加列表:equal?,car,cdr,cons,cond,if,quote,+,*,null?,symbol,整数?,任何car/cdr变量,定义,让。(您会注意到,不允许使用任何#list或#append调用) 我尝试过几种不同的方法,但它只给出了像“(0.10)这样的东西,而不是理想的(0.10)。是的,这是更大任务的一部分 在Scheme中,“正确列表”以空列表结尾。因此,您可以将”(0 10)设置为如下: (cons 0 (cons 1
”(0 10)
设置为如下:
(cons 0 (cons 10 '()))
通常,您可以使用(cons new-element-old-list)
将某些内容添加到适当列表的前面,您将得到一个新的适当列表。非空正确列表的cdr
本身始终是正确列表。汽车可以是任何东西
cons这个词是“construct”的缩写:它是构造列表的最原始的过程。一般来说:
您可以为自己定义所有非“特殊形式”的内置过程
定义你自己的
(define (append-my List1 List2)
(if (null? List1)
list2
(cons (car List1)
(append-my (cdr List1) List2))))
在《计算机程序的结构和解释》一书中,你会发现
内置过程的许多定义。每个对Scheme或Lisp感兴趣的人都应该学习SICP的前三章。你完全正确。我分别测试了该函数的传递内容,并为参数输入了0,而不是运行整个程序将传递的“()”。德普。。。