Proposal: instance Alternative ZipList

David Feuer david.feuer at gmail.com
Fri Jul 17 21:16:53 UTC 2015


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/77e46ad8/attachment.html>


More information about the Libraries mailing list