9

f 和 g 的组成看起来像

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

是我在代码中经常发现的一种模式。它类似于一元函数组合,只是f二进制,我想g在两个参数传递给f.

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

flip ((.) . f . g) g

我宁愿在我的代码中没有它,所以我最终只是明确地写出模式。

是否有一种普遍接受的方式来为这种情况编写组合器?还是我很奇怪地发现自己经常处于这种情况?

我现在没有一个实际的例子来说明我什么时候使用它,因为我从来没有想过在我需要它的时候在这里问,但是可以想象用它非常巧妙地编写欧几里得距离公式,就像这样:

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

1 回答 1

24

该函数onData.Function模块中调用。

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

于 2013-09-28T07:54:21.777 回答