[英]Haskell notation for composing two functions f and g where g takes multiple arguments
我經常發現我想要編寫兩個函數f和g,但g需要多個參數。 Haskell是否提供了一組操作符(我知道我可以自己編寫它,但它看起來相當常見,我不想復制已存在於Haskell中的運算符)
即類似的東西
(.@) = (.)
(.@@) f g x1 x2 = f $ g x1 x2
(.@@@) f g x1 x2 x3 = f $ g x1 x2 x3
(.@@@@) f g x1 x2 x3 x4 = f $ g x1 x2 x3 x4
...
達到一些合理數量的論點
我知道你得到了你想要的答案,但我想指出這些組合器具有以下可愛的實現方式:
(.:) = (.) . (.)
(.:.) = (.) . (.) . (.)
(.::) = (.) . (.) . (.) . (.)
(.::.) = (.) . (.) . (.) . (.) . (.)
如果您只需要完全應用它們:
f .: g = (f .) . g
f .:. g = ((f .) .) . g
f .:: g = (((f .) .) .) . g
f .::. g = ((((f .) .) .) .) . g
在不定義運算符的情況下直接使用這些表達式似乎並不那么糟糕。 至少第一個, (f .) . g
(f .) . g
,對我來說似乎足夠可讀。
從@bheklilr的評論來看,我正在尋找的答案在組合庫中: http : //hackage.haskell.org/package/composition-1.0.1.0/docs/Data-Composition.html
函數(。:),(。:。),(。::),(。::。)等正是我所想的
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.