在haskell中是否使用lambdas实现currying?
在Haskell中,下面的代码是思考咖喱的正确方法。下面是haskell中的一个添加示例在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)开发,哈斯克尔·库
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