Language agnostic 调用委托与部分函数应用

Language agnostic 调用委托与部分函数应用,language-agnostic,functional-programming,Language Agnostic,Functional Programming,我需要从代码中的许多地方调用一个带有两个参数的函数 hash(itemToHash, algorithm) { ... } 我不想在每个函数调用中传递算法参数 我可以创建一个带有一个参数的函数来委托调用: md5hash(itemToHash) { hash(itemToHash, 'md5') } 或者我可以使用部分应用程序绑定算法参数 我的方法是创建一个高阶函数,返回部分应用的散列函数,我将从代码中的许多地方调用这个高阶函数来获得单参数函数 然而,这不是很复杂吗?与简单的调用委托相

我需要从代码中的许多地方调用一个带有两个参数的函数

hash(itemToHash, algorithm) { ... }
我不想在每个函数调用中传递
算法
参数

我可以创建一个带有一个参数的函数来委托调用:

md5hash(itemToHash) {
   hash(itemToHash, 'md5')
}
或者我可以使用部分应用程序绑定
算法
参数

我的方法是创建一个高阶函数,返回部分应用的散列函数,我将从代码中的许多地方调用这个高阶函数来获得单参数函数


然而,这不是很复杂吗?与简单的调用委托相比,我并不认为第二种方法有任何好处。

假设您有一些函数
partial
将参数部分应用于其他函数。您不需要在希望使用部分应用函数的代码中的任何地方调用此
partial
函数

事实上,你只需要叫它一次。生成一个部分应用的函数,然后将其绑定到一个名称

md5Hash := partialRight(hash, 'md5')
至于我的理解呢

md5Hash(itemToHash) {
    hash(itemToHash, 'md5')
}
是一种局部应用。尽管是静态的。
partial
函数的好处是能够在运行时创建部分应用的函数