Functional programming 方案迭代是如何工作的?

Functional programming 方案迭代是如何工作的?,functional-programming,scheme,Functional Programming,Scheme,从4.2.4迭代下开始 (let ((x '(1 3 5 7 9))) (do ((x x (cdr x)) (sum 0 (+ sum (car x)))) ((null? x) sum))) -cdr和car的用法是什么 这条x行中会发生什么 (do ((x x (cdr x)) (sum 0 (+ sum (car x)))) ((null? x) sum)) car=第一个(如列表中的第一个元素) cdr=r

4.2.4迭代下开始

(let ((x '(1 3 5 7 9)))
  (do ((x x (cdr x))
       (sum 0 (+ sum (car x))))
      ((null? x) sum))) 
-
cdr
car
的用法是什么

这条
x
行中会发生什么

(do ((x x (cdr x))
           (sum 0 (+ sum (car x))))
          ((null? x) sum))
  • car=第一个(如列表中的第一个元素)
  • cdr=rest(与列表中除第一个元素以外的所有元素一样)

循环将列表中的项目添加。

虽然从规范中学习方案可能起作用,但我恳求您考虑阅读一本书。有很多免费的,例如著名的计算机程序结构和解释。根据迭代语法,你能解释一下这里的
是什么吗?do中的第一个子句声明局部变量x(初始化为周围的x,每次迭代都用(cdr x)替换)和sum(初始化为0,并在每次迭代中用sum plus(car x)替换)。一旦第二个子句中的第一个子句为true(x为空),则返回sum的值。