我目前正在阅读《计算机程序的构造和解释》这本书,并且同时听布莱恩·哈维的讲座(他有时候很搞笑),但是我还没有真正领悟到区分函数和过程的“啊哈!时刻”。
现在,我已经在课程和阅读之外进行了研究,并找到了几篇关于同一问题的不同帖子,但是似乎都分成了单独的讨论/意见,涉及真正的解释或过时的定义。我看到的一个普遍答案是函数返回值而过程不返回,但这并没有为我解决多少问题,大多数回答用户也都对这个答案提出了一些质疑。
在文本和讲座中深入研究高阶过程,我完全理解了这个概念以及它所提供的强大功能,但我感到困惑的是,我会听到“高阶过程”和“高阶函数”。布莱恩·哈维还提到,“高阶过程表示高阶函数”。
我理解下面两个函数是相同的函数,但是过程不同。
f(x) = 2x + 6
g(x) = 2(x + 3)
现在,下面将make-adder称为一个具有num作为形式参数的过程。make-adder的定义域是数字,范围是过程。我想真正让我困惑的是,他将lambda表达式称为恰好那个lambda表达式,但是make-adder返回的是一个过程?
(define (make-adder num)
(lambda (x) (+ x num))
(define plus3 (make-adder 3))
(plus3 8)
我原本以为自己很清楚,直到在高阶过程课程中提到了一些过程的参考,这让我感到困惑了。
请问能否给出一个可能的例子来区分这两个概念?谢谢!