大约 8 个月前,我阅读了 Java Schools 的危险,从那时起,我一直将它用作我应该很快学习的东西的清单。我理解他所说的大部分内容。
然而,这部分我不太确定:
在纯函数式程序中,变量的值永远不会改变,但它一直在改变!一个悖论!
我从中得到的(如果我错了,请原谅我)是他在谈论递归,但递归似乎是
一个过于简单的概念。这是我的思路:
(define (tail-rec n)
(if (= n 1)
(display "Done!")
(begin
(display n)
(newline)
(tail-rec (- n 1)))))
n
当您查看输出的内容时,尾递归函数中的值tail-rec
还没有改变,您会发现它实际上发生了变化。此外,由于函数本身不会改变
任何变量的状态,这意味着它是纯函数式的。
苏……
我说得对吗?
这就是乔尔所说的吗?如果没有,请纠正我。