美文网首页
Function Currying

Function Currying

作者: RocWay | 来源:发表于2017-04-20 18:10 被阅读0次

函数柯理化,很多人觉得很难理解。其实难就难在它的翻译并不恰当。如果翻译成

部分绑定函数

含义是不是一目了然?学过C++,用过 STL std::bind函数的同学应该对这个翻译感到很亲切:这不就是名义上只接受部分参数,但其实底下偷偷补足其他参数的做法吗?

比如下面这个JS版的bind函数,它可以绑定函数的第一个参数(预先指定一个实参),从而生成一个新的函数:

var bind = function(fn, a){
    return function(b){
        return fn(a, b)
    }
}
var mult = function(a, b){
    return a*b
}

// 绑定mult的第一个参数a,譬如指定该参数为2
var time2 = bind(mult, 2)

// 调用新函数time2
time(1) // 得2
time(3) // 得6

当然,严谨一点来说,currying之后的函数只接受一个参数,这比一般的部分绑定函数形式上更加精炼。

之所以这种函数处理方式叫做currying,是源自美国的数学家兼逻辑学家,Haskell Curry。虽然不是他发明的,但是却是这种方式的发扬者。
最初由Gottlob Frege提出,经 Moses Schönfinkel发展,最终 Haskell Curry集其大成。

相关文章

  • Function Currying

    函数柯理化,很多人觉得很难理解。其实难就难在它的翻译并不恰当。如果翻译成 部分绑定函数 含义是不是一目了然?学过C...

  • 函数柯里化(基础)

    简介 与函数绑定紧密相关的主题是函数柯里化(function currying),它用于创建已经设置好了一个或多个...

  • JS_函数柯里化

    JS_函数柯里化 与函数绑定密切相关的主体是函数柯里化(function currying),它用于创建已经设置好...

  • 函数的柯里化和反柯里化

    一 柯里化(currying) 柯里化(currying)又称部分求值。一个currying的函数首先会接受一些参...

  • Currying

    介绍 Methods may define multiple parameter lists. When a me...

  • currying

    what's currying curry化就是把add(2,3)变成add(2)(3) 我们仔细看看这里发生了什...

  • Swift_currying(柯里化)

    一. Currying解释 currying 翻译为局部套用.又称为部分求值(Partial Evaluation...

  • Swift 进阶

    swift新元素 柯里化(Currying) Swift 里可以将方法进行柯里化(Currying),这是也就是把...

  • Swift Currying

    本博客主要是对下面博客的翻译:https://robots.thoughtbot.com/introduction...

  • Currying Operator

    柯里化 操作符 可以直接重载+ - 乘操作符,在swift中有了这些操作符的定义,如果想自定义操作符,比如点乘+*...

网友评论

      本文标题:Function Currying

      本文链接:https://www.haomeiwen.com/subject/poelzttx.html