Proposal: Add insertAt to Data.Sequence

Edward Kmett ekmett at gmail.com
Mon May 30 01:38:38 UTC 2016


I rather like the variant without the bounds check that does the right
thing at extremes.

-Edward

On Sun, May 29, 2016 at 6:26 PM, David Feuer <david.feuer at gmail.com> wrote:

> No, it would not be feasible to have it return a Maybe; usability
> would go down the drain. My preferred total alternative would be to
> drop the bounds check in that spec, so
>
> insertAt (-1) 99 [1,2,3]  ===  [99,1,2,3]
> insertAt 12 99 [1,2,3] === [1,2,3,99]
>
> The only potential concern is that trying to insert at an out-of-range
> index seems likely to be a mistake someone might want to get an error
> message about. There are a number of other functions in Data.Sequence
> that are partial in similar ways; I'm very open to making them total,
> but the previous maintainers were concerned about losing useful
> errors.
>
> On Sun, May 29, 2016 at 6:10 PM, Ivan Lazar Miljenovic
> <ivan.miljenovic at gmail.com> wrote:
> > On 30 May 2016 at 06:32, David Feuer <david.feuer at gmail.com> wrote:
> >> I've come up with an implementation of
> >>
> >> insertAt :: Int -> a -> Seq a -> Seq a
> >> -- Defined to be equivalent to
> >> insertAt i x xs
> >>   | i < 0 || i > length xs = error "insertAt: index out of range"
> >>   | otherwise = take i xs <> singleton x <> drop i xs
> >>
> >> that inserts the given element at the given index with very little
> >> tree restructuring. I came up with the vague notion that it might be
> >> interesting to try to do something like this early last year, but I
> >> wasn't sure how at the time. I largely forgot about it until today,
> >> when someone on StackOverflow pointed to the issue I'd opened and
> >> asked if it would be implemented, presumably because he wants it. What
> >> do y'all think?
> >
> > The partiality is a little troubling; would it be feasible from a
> > usage point of view to have this function return a Maybe?
> >
> > --
> > Ivan Lazar Miljenovic
> > Ivan.Miljenovic at gmail.com
> > http://IvanMiljenovic.wordpress.com
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20160529/b2178f9b/attachment.html>


More information about the Libraries mailing list