假設我們有兩個函數(a -> b -> c)
。我想要有一個函數,它適用於a
和b
將給出d
,從c
合併指定的函數(c -> c -> d)
。我想出了用箭頭此解決方案:結合兩個curried函數
combine :: (a -> b -> c) -> (a -> b -> c) -> (c -> c -> d) -> (a -> b -> d)
combine f g op = ((uncurry op) .) . (uncurry (&&&)) . (f &&& g)
有沒有一種方式,更優雅的方式來做到這一點,或者概括它是適用於功能具有更大的元數(例如(a -> b -> c -> d) -> (a -> b -> c -> d) -> (d -> d -> e) -> (a -> b -> c -> e)
)?
我認爲用'op'作爲中綴會更好:''''''''''''''''我懷疑有些人可能會不同意;其中一部分是我的編輯突出顯示不同的事情,這使得它更容易閱讀。 –
非常完美,謝謝!當你已經看到答案時,它總是很容易:) –