gpt4 book ai didi

haskell - 是否有 C++ 的 std::bind2nd 的内置 Haskell 等效项?

转载 作者:行者123 更新时间:2023-12-02 12:15:50 25 4
gpt4 key购买 nike

我缺少的是部分应用函数的第二个参数而不是第一个参数的能力。当我想将函数传递给诸如 map 之类的东西,但不必每次都为其编写 lambda 时,这特别有用。

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

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

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

最佳答案

它的名字是 flip .

示例:

Prelude> flip (-) 2 3
1

为了将来引用,只需搜索 Hoogle 就可以找到它。对于您问题中的类型签名,即 (a -> b -> c) -> b -> a -> c 。 :-)

关于haskell - 是否有 C++ 的 std::bind2nd 的内置 Haskell 等效项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/497132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com