簡體   English   中英

用於組合兩個函數f和g的Haskell表示法,其中g表示多個參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM