繁体   English   中英

涉及函数组合的常见模式(\ a b - > f(g a)(g b))

[英]A common pattern involving composition of functions (\a b -> f (g a) (g b))

f和g的组成看起来像

f :. g = \a b -> f (g a) (g b)

是我在代码中经常发现的模式。 它类似于一元函数组合,只有f是二元的,我想在传递给f之前将g应用于两个参数。

当我要求lambdabot将其转换为无点形式时,我得到了奇怪的咒语

flip ((.) . f . g) g

在我的代码中我不想拥有它,所以我最终只是明确地写出了模式。

是否有一种普遍接受的方法来为这种情况编写组合子? 或者我在这种情况下发现自己很奇怪?

我现在没有一个实际的例子,因为当我需要时,我从未想过要问这里,但可以想象用它非常整齐地写出欧几里德距离公式,就像这样:

distance = sqrt . (+) :. (^2)

该功能被称为on的在Data.Function模块。

它经常使用中缀,例如sqrt . (+) `on` (^2) sqrt . (+) `on` (^2)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM