假设我们有两个 type 函数(a -> b -> c)
。我想要一个函数,当应用于a
并将b
给出时,由指定的函数d
合并。我用箭头想出了这个解决方案:c
(c -> c -> d)
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)
)?