haskell - 将函数应用于haskell中的每个参数

标签 haskell lambda

有时,我需要创建一个将不同的函数映射到两个值,然后将它们组合在一起的函数。不使用lambda怎么做?

我的职能是:

f :: a -> b
g :: c -> d
combine :: b -> d -> e

问题是:如何在不使用lambda的情况下编写\x y -> combine (f x) (g y)

最佳答案

一种可选的无点拼写涉及通过使用curryuncurry(***)(来自Control.Arrow)或bimap(来自Data.Bifunctor)将参数作为一对来处理:

GHCi> :t \combine f g -> curry (uncurry combine . (f *** g))
\combine f g -> curry (uncurry combine . (f *** g))
  :: (a1 -> b1 -> c) -> (a -> a1) -> (b -> b1) -> a -> b -> c

请注意,与jpath的建议不同,它甚至不比非pointfree版本短。

关于haskell - 将函数应用于haskell中的每个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40564737/

相关文章:

haskell - 为什么这个表单不违反 `$` 的类型签名?

Haskell - 生成节点之间的所有路径

javascript - 如何通过 "setInterval"kick ass pass scope

c# - 从 lambda 返回数组索引但抛出 IndexOutOfRangeException

传递给 create_function 的 PHP 沙箱/清理代码

java - 有没有办法从 ifPresent 方法向调用方法返回可选值?

haskell - 未装箱类型的限制

performance - 一维 Haskell 列表上的随机访问性能

haskell - 理解函数式编程中的递归代数类型

c++ - 我可以在 lambda 中使用 constexpr 值而不捕获它吗?