簡體   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