Я просто написал такие функции до map4
только потому, что они кажутся полезными:
map2 :: Functor f => (i -> a) -> (i -> b) -> f i -> f (a,b)
map2 f1 f2 = fmap $ \i -> (f1 i, f2 i)
Прежде чем перейти к map8
, я решил спросить, есть ли что-то подобное в каком-нибудь стандартном модуле. Hayoo, кажется, не знает ни одной функции, которая имеет сигнатуру выше.
Примечание. Я уже нашел Control.Arrow.&&&
, который сокращает приведенное выше до:
map2 f1 f2 = fmap (f1 &&& f2)
Но, кажется, нет аналогичной функции для разветвления более двух.