Я просто писал такие функции до 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)
Но, похоже, не существует аналогичной функции для разветвления более двух.