无法理解这个clojure make-adder的例子

Del*_*man 5 clojure

我试着读一下Clojure,但是我用以下基本示例打了一堵砖墙:

(defn make-adder [x]
  (let [y x]
    (fn [z] (+ y z))))
(def add2 (make-adder 2))
(add2 4)
-> 6
Run Code Online (Sandbox Code Playgroud)

我不明白的是如何add2将数字4传递给make-adder函数,以及该函数如何将该数字赋给z.

提前致谢!

Nat*_*hes 6

make-adder返回一个带有一个参数(z)的函数,传入的参数make-adder用于为y赋值.add2设置等于make-adder参数为2 的评估结果.所以add2设置等于从返回的函数make-adder,因为(因为y已经分配给参数make-adder),看起来像

(fn [z] (+ 2 z))
Run Code Online (Sandbox Code Playgroud)

所以(add2 4)调用此函数计算结果为6.这有帮助吗?