相关疑难解决方法(0)

实际使用咖喱功能?

有很多关于如何理解函数的教程,以及stackoverflow中的许多问题.然而,在阅读了The Little Schemer,几本书,教程,博客文章和stackoverflow主题之后,我仍然不知道这个简单问题的答案:"有什么关系?" 我明白如何理解一个功能,而不是"为什么?" 在它背后.

有人可以向我解释一下curried函数的实际用法(在每个函数只允许一个参数的语言之外,使用currying的必要性当然非常明显.)

编辑:考虑到TLS的一些例子,有什么好处

(define (action kind)
    (lambda (a b)
        (kind a b)))
Run Code Online (Sandbox Code Playgroud)

而不是

(define (action kind a b)
    (kind a b))
Run Code Online (Sandbox Code Playgroud)

我只能看到更多的代码,没有更多的灵活性......

lisp scheme haskell functional-programming currying

29
推荐指数
2
解决办法
4598
查看次数

currying只是一种避免继承的方法吗?

所以我对currying的理解(基于SO问题)是它允许你部分设置函数的参数并返回一个"截断"函数作为结果.

如果你有一个很大的毛发功能需要10个参数,看起来像

function (location, type, gender, jumpShot%, SSN, vegetarian, salary) {
    //weird stuff
}
Run Code Online (Sandbox Code Playgroud)

并且你想要一个"子集"函数,它可以让你处理除了之外的所有预设jumpShot%,你不应该打破一个继承原始函数的类吗?

我想我正在寻找的是这种模式的用例.谢谢!

language-agnostic currying

9
推荐指数
2
解决办法
567
查看次数