(define changeit (lambda (x) (* x x))) (define changeall (lambda (x) (if (null? x) '() (cons (changeit (car x)) (changeall (cdr x)))))) (changeit 8) (changeit 9) (changeall '(2 14 10 8))
我不知道这是什么代码试图做
我真的不知道什么changeall
在做,谁能帮助解释一下吗?
编辑:这里是代码
(define changeit (lambda (x) (* x x))) (define changeall (lambda (x) (if (null? x) '() (cons (changeit (car x)) (changeall (cdr x)))))) (changeit 8) (changeit 9) (changeall '(2 14 10 8))
我不知道这是什么代码试图做
我真的不知道什么changeall
在做,谁能帮助解释一下吗?
编辑:这里是代码
其余尽管奥斯卡·洛佩斯的评论总结了是怎么回事,这个答案是一个比较详细的。 changeit
就是x^2
的功能。 changeall
是一个参数的函数。如果该参数是空列表((null? x)
),则该函数返回空列表。否则,changeall
将计算其参数列表((car x)
)的第一个元素的平方值,并将其前缀与changeall
调用的结果及其初始参数列表的其余部分((cdr x)
)一起调用。这是一个递归函数调用。在某些时候,参数列表将被耗尽,也就是说,参数将是空列表,并且changeall
将返回空列表(我们考虑的第一种情况)。此时,递归将停止。
我建议你在你的REPL中运行它。我们无法知道,因为我们不知道'changei'的作用。 – Rptx
这是一个''地图',它的输入列表中的所有元素都是正方形的。你走了。 –