Skip to main content
 Web开发网 » 操作系统 » linux系统

Clojure 部分求值与部分应用

2021年10月14日5970百度已收录

部分求值与部分应用当对函数进行部分求值时,会得到一个新的函数。

该函数接受一个参数,并返回原来的那个函数,只不过有一个参数被固化了。部分求值又名柯里化,

Clojure 部分求值与部分应用  第1张

部分应用

Clojure 部分求值与部分应用  第2张

部分求值Clojure 部分求值与部分应用  第3张

你需要的是部分应用,那么部分求值只不过是个过渡步骤罢了。事实上, faux-curry 并不是真正的部分求值。真正的部分求值,返回的是结果,而不是一个没有参数的函数(一旦所有参数都被固化了)。你可以借助 true?函数来辨明其间的差异。此时,true?函数只接受一个参数。

Clojure 部分求值与部分应用  第4张

由于Clojure函数可以接受变长的参数列表,Clojure无从得知参数何时才算是全部都确定了。但作为程序员,却很清楚参数是什么时候添加完毕的。一旦固定了足够多的参数以后,调用这个函数就行。意思就是,在前面的那个表达式外面再增添一对额外的括号。

Clojure 部分求值与部分应用  第5张

部分求值在 Clojure 中的缺席,算不上是什么大问题。因为不管怎样,即使没有curry,也还有partial可用,而且一般来讲,后者才是人们所期望的。

事实上,许多程序员并未区分术语“部分求值”与“部分应用”。

相比直接编写递归或惰性代码,通过组合现有序列库中的函数,能创建更为简单且更加通用的解决方案。

评论列表暂无评论
发表评论
微信