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