首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于C++的std::bind2nd,有没有内置的Haskell等价物?

对于C++的std::bind2nd,有没有内置的Haskell等价物?
EN

Stack Overflow用户
提问于 2009-01-30 20:31:29
回答 1查看 271关注 0票数 4

我缺少的是部分应用函数的第二个参数而不是第一个参数的能力。当我想要将函数传递给像map这样的函数,而不需要每次都为它编写一个lambda时,这特别有用。

我为此编写了自己的函数(下面的定义,以防确实没有任何内置的函数用于此,并且其他人也很好奇),但我真的很想知道Prelude中是否已经存在用于这个习语的东西,因为我更喜欢重用而不是重新发明。

下面是我的定义和一个简单的例子:

代码语言:javascript
复制
bind2nd :: (a -> b -> c) -> b -> a -> c
bind2nd f b = \a -> f a b

foo :: Int -> Bool -> String
foo n b | b = show n
        | otherwise = "blabla"

alwaysN :: Int -> String
alwaysN = bind2nd foo True
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-01-30 20:37:57

它被称为flip

示例:

代码语言:javascript
复制
Prelude> flip (-) 2 3
1

为了便于将来参考,只需在Hoogle中搜索问题中的类型签名,即(a -> b -> c) -> b -> a -> c即可找到它

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/497132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档