Add traverseWithIndex to Data.Sequence

David Feuer david.feuer at gmail.com
Tue Jan 19 23:12:58 UTC 2016


I just realized there *is* a way to implement traverseWithIndex reasonably
efficiently with the current interface:

traverseWithIndex f = sequenceA . mapWithIndex f

I still think it's a good thing to add though.
On Jan 19, 2016 12:24 PM, "Milan Straka" <milan at strakovi.com> wrote:

> Hi David and all,
>
> > -----Original message-----
> > From: David Feuer <david.feuer at gmail.com>
> > Sent: 19 Jan 2016, 11:55
> >
> > Indexed traversals seem to be pretty popular these days, and sequences
> > should be able to support them efficiently. At present, the best
> > options are
> >
> > 1. Thread a counter through. This doesn't work well for weird things
> > like lazy State.
> >
> > 2. Use zipWith first to add indices, then traverse. This adds a
> > smaller, but still asymptotic, penalty to the same sorts of unusual
> > functors, and also adds constant-factor overhead to strict ones that
> > the counter threading wouldn't.
> >
> > I propose the following, modified mechanically from mapWithIndex. It
> > should be about as efficient as possible in all cases.
>
> +1 from me.
>
> BTW, we have traverseWithKey in Map and IntMap, and traverseWithIndex
> seems a bit analogous for (indexable) Sequences, where an index can play
> a role of a key.
>
> Cheers,
> Milan
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20160119/37a1b09f/attachment.html>


More information about the Libraries mailing list