Proposal: Add insertAt to Data.Sequence
Andreas Abel
abela at chalmers.se
Mon May 30 06:09:49 UTC 2016
On 30.05.2016 00:26, David Feuer wrote:
> No, it would not be feasible to have it return a Maybe; usability
> would go down the drain.
A priori, I cannot see why. It is easy to make a Maybe-partial function
"total" by prefixing it with
fromMaybe (error "the universe is inconsistent")
If you want to insert at the beginning or at the end, I suppose special
functions are already in place.
Cheers, Andreas
> 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
>
--
Andreas Abel <>< Du bist der geliebte Mensch.
Department of Computer Science and Engineering
Chalmers and Gothenburg University, Sweden
andreas.abel at gu.se
http://www2.tcs.ifi.lmu.de/~abel/
More information about the Libraries
mailing list