haskell infix 和 prefix 的疑问
在 haskell 中,可以用 () 和 `` 让函数在 prefix 和 infix 之间转化,但是,这个仅限于 binary 函数,也就是有两个参数的函数。
另一方面,我们也知道,其实 haskell 中没有多参数的函数,只有单个参数的函数,多个函数的函数实际上是单个参数的函数在 binding 一个参数后变成了另一个函数,再 binding 再变,如此直到得出结果。
那么,为什么 infix 和 prefix 只可以用在两个参数的函数中呢?
如果可以用在多元函数中,那用 map filter 之类的函数将是很方便的。
比如
- insTest :: Int -> Int -> Int -> Int -> Int
- insTest x1 x2 x3 x4 = x1 + x2 + x3 + x4
复制代码
现在想把一个数组中每个元素依次替换其中的第三个参数,得到的结果是另一个数组,用 map 的话,应该怎样来写呢?
是不是要用 lambda 或者另外定义一个函数呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
lambda 演算是 FP 的基础,当然有用了。
它就是匿名函数,自然是有用的。
多谢楼上两位,这样看来,lambda 还是有它的用处的。
用 lambda 或者 flip 就可以了。
复制代码
[ 本帖最后由 flw 于 2008-10-20 15:05 编辑 ]
谢谢关注。
是这个意思
比如
复制代码
现在想得到对于 arr2 中的每一个 x, 计算
复制代码
得到
复制代码
下面这段没看懂是啥意思。
可以吧。注意优先级就可以了。
复制代码
[ 本帖最后由 flw 于 2008-10-20 12:20 编辑 ]
how? 另外,map/filter 一次只能处理 list 中的一个元素。要一次处理 list 中的多个元素,可以用 pattern match。
这个有什么问题么?
[ 本帖最后由 MMMIX 于 2008-10-20 12:14 编辑 ]