Haskell:有没有更简单的方法来表达函数( g x y -> f (g x) (g y))?使用应用性 ((->) r)?

问题描述 投票:0回答:1
combinator :: (b -> b -> c) -> (a -> b) -> a -> a -> c
combinator f g x y = f (g x) (g y)

有没有更简单的方法来表达这个函数?我发现自己经常使用它。

我尝试使用 (r->) 的 Applicative 实例,但我能得到的最好的结果是

(<*>) : (r -> a -> b) -> (r -> a) -> (r -> b), f <*> g = (\r -> f r (g r))

haskell combinators
1个回答
0
投票

您显然不是唯一发现该功能有用的人,因为该组合器包含在

base
模块中的
Data.Function
中。这叫
on

Hoogle 搜索引擎允许通过函数签名搜索函数,有助于找到此类问题的答案。

© www.soinside.com 2019 - 2024. All rights reserved.