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