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
可以有任意数量的参数。