Proposal: Add insertAt to Data.Sequence

Ivan Lazar Miljenovic ivan.miljenovic at
Sun May 29 22:10:48 UTC 2016

On 30 May 2016 at 06:32, David Feuer <david.feuer at> 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

More information about the Libraries mailing list