我只是写了这样的函数,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)
但是对于超过两个的扇出似乎没有类似的功能。