On Mar 28, 2012, at 4:19 PM, Christopher Done wrote:

On 28 March 2012 22:05, Matthew Steele <mdste...@alum.mit.edu> wrote:
Doesn't for already exist, in Data.Traversable?   Except that for =
flip traverse.

Traverse doesn't fit the type of fmap, it demands an extra type constructor:

traverse :: (Traversable t,Applicative f) => (a -> f b) -> t a -> f (t b)

fmap :: Functor f => (a -> b) -> f a -> f b

Note the (a -> f b) instead of (a -> b).

E.g.

fmap :: (a -> b) -> [a] -> [b]

can't be expressed with traverse, you can only get this far:

traverse :: (a -> [b]) -> [a] -> [[b]]

Unless I'm missing something.

That right; I was simply pointing out that the name 'for' is already taken by an existing base function.

Things might be more consistant if 'traverse' and 'for' were instead called 'mapA' and 'forA' (by analogy with 'mapM' and 'forM'). Then one could add 'for = flip map' to base without conflict. But for some reason, that's not the case.

Cheers,
-Matthew


_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to