在haskell中是否使用lambdas实现currying?

在haskell中是否使用lambdas实现currying?,haskell,lambda,currying,Haskell,Lambda,Currying,在Haskell中,下面的代码是思考咖喱的正确方法。下面是haskell中的一个添加示例 f = \x -> \y -> x + y 一般来说,在函数式编程中使用lamdba实现了currying吗?currying是: 在数学和计算机科学中,curry是一种将对函数的求值转换为对函数序列求值的技术,该函数包含多个参数(或一组参数),每个参数只有一个参数。它由哥特洛布·弗雷格(Gottlob Frege)引入,由摩西·舍芬克尔(Moses Schönfinkel)开发,哈斯克尔·库

在Haskell中,下面的代码是思考咖喱的正确方法。下面是haskell中的一个添加示例

f = \x -> \y -> x + y
一般来说,在函数式编程中使用lamdba实现了currying吗?

currying是:

在数学和计算机科学中,curry是一种将对函数的求值转换为对函数序列求值的技术,该函数包含多个参数(或一组参数),每个参数只有一个参数。它由哥特洛布·弗雷格(Gottlob Frege)引入,由摩西·舍芬克尔(Moses Schönfinkel)开发,哈斯克尔·库里(Haskell Curry)进一步开发

现在你可以说,在Haskell中,一个函数有一个以上的参数(当然可以有元组,见下文),所以在某种意义上,Haskell中的所有函数都已经出现了(或者只能以这种方式定义)

当然有,但这些作用于元组:

我可以说元组也是一个参数;)


在概念层面上,你当然是对的,正如奥古斯都指出的那样

但遗憾的是,存在一些问题(例如)这种平等性不成立(如果不添加类型签名):

咖喱是:

在数学和计算机科学中,curry是一种将对函数的求值转换为对函数序列求值的技术,该函数包含多个参数(或一组参数),每个参数只有一个参数。它由哥特洛布·弗雷格(Gottlob Frege)引入,由摩西·舍芬克尔(Moses Schönfinkel)开发,哈斯克尔·库里(Haskell Curry)进一步开发

现在你可以说,在Haskell中,一个函数有一个以上的参数(当然可以有元组,见下文),所以在某种意义上,Haskell中的所有函数都已经出现了(或者只能以这种方式定义)

当然有,但这些作用于元组:

我可以说元组也是一个参数;)


在概念层面上,你当然是对的,正如奥古斯都指出的那样

但遗憾的是,存在一些问题(例如)这种平等性不成立(如果不添加类型签名):


是的,在Haskell中,
fxy=…
的定义是指
f=\x->\y->…
。你能确切地澄清你的要求吗?是的,在Haskell中,
fxy=…
的定义是指
f=\x->\y->…
。你能确切地澄清你的要求吗?在单态限制下,平等性很好。你只需要给这两个函数类型签名。@amalloy我可能应该提到这一点是的-但OP没有,我只是想对Augustss的评论进行评论。等式在单态限制下保持良好。你只需要给这两个函数类型签名。@amalloy我可能应该提到这一点是的-但是OP没有,我只是想对augustss的评论进行评论
curry                   :: ((a, b) -> c) -> a -> b -> c
curry f x y             =  f (x, y)
add x y = x + y === add = \x -> \y -> x + y