Proposal: instance Alternative ZipList

Edward Kmett ekmett at gmail.com
Fri Jul 17 21:18:38 UTC 2015


I'm more than open to switching to a more efficient solution.

-Edward

On Fri, Jul 17, 2015 at 5:16 PM, David Feuer <david.feuer at gmail.com> wrote:

> The implementation could use some work. Something more like this, I think.
>
> (<|>) = foldr (\x k ys -> x : k (drop 1 ys)) id
>
> In pointless silliness, it's even
>
> foldr ((. (. (maybe ([]) snd . uncons))) . (.) . (:)) id
> On Jul 17, 2015 2:15 PM, "Edward Kmett" <ekmett at gmail.com> wrote:
>
>> Er.. I obviously meant
>>
>> instance Alternative ZipList where
>>    empty = ZipList []
>>    ZipList xs <|> ZipList ys = ZipList (xs ++ drop (length xs) ys)
>>
>> sorry for any confusion.
>>
>> On Fri, Jul 17, 2015 at 11:37 AM, Edward Kmett <ekmett at gmail.com> wrote:
>>
>>> The ZipList data type admits one legal Alternative instance
>>>
>>> instance Alternative ZipList where
>>>    pure = ZipList []
>>>    ZipList xs <|> ZipList ys = ZipList (xs ++ drop (length xs) ys)
>>>
>>> The legality of this instance was first noted in
>>> http://people.cs.kuleuven.be/~tom.schrijvers/Research/papers/ppdp2015.pdf
>>>
>>> I propose adding this instance, which acts like a generalized version of
>>> the Alternative for Maybe, choosing with a left bias.
>>>
>>> Discussion Period: 2 weeks
>>>
>>> -Edward
>>>
>>
>>
>> _______________________________________________
>> 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/20150717/460cb47d/attachment.html>


More information about the Libraries mailing list