Clojure comp的实现

Clojure comp的实现,clojure,Clojure,我试图理解这个函数是如何工作的,它是comp的一个实现(摘自本书“函数编程”一章): 其思想是它需要两个函数并将它们应用于args。我不明白的是参数是如何到达匿名函数的,因为它们不是作为参数输入到two comp?如何以这种方式使用two comp?two comp返回一个匿名函数,该函数依次接受args。查看两个组件的主体: (fn [& args] (f (apply g args))) fn创建一个函数,函数定义如下。fn的返回值是从two comptwo comp返回一个匿

我试图理解这个函数是如何工作的,它是
comp
的一个实现(摘自本书“函数编程”一章):


其思想是它需要两个函数并将它们应用于args。我不明白的是参数是如何到达匿名函数的,因为它们不是作为参数输入到
two comp
?如何以这种方式使用
two comp

two comp
返回一个匿名函数,该函数依次接受
args
。查看两个组件的主体:

(fn [& args]
  (f (apply g args)))

fn
创建一个函数,函数定义如下。
fn
的返回值是从
two comp

two comp
返回一个匿名函数,该函数依次接受
args
。查看两个组件的主体:

(fn [& args]
  (f (apply g args)))

fn
创建一个函数,函数定义如下。
fn
的返回值是从只接受一个参数的
g
two comp

返回的值,
(defn two comp[f g](fn[x](f(g x)))
返回一个函数,该函数在调用
g
参数的结果时调用
f
。同样,问题中的
two comp
只是对其进行了修改,使得
g
可以有任意数量的参数。对于只接受一个参数的
g
(defn two comp[f g](fn[x](f(g x)))
返回一个函数,该函数在调用
g
参数的结果时调用
f
。同样,问题中的
two comp
只是对其进行了修改,以便
g
可以有任意数量的参数。