Proposal: add uncons (and unsnoc) to Data.List

Oliver Charles ollie at ocharles.org.uk
Sun Jul 20 00:10:35 UTC 2014


+1 for uncons, I've wanted that a few times.


On Sat, Jul 19, 2014 at 11:47 PM, David Feuer <david.feuer at gmail.com> wrote:

> Alexander Berntsen indicates that he has a branch all ready to go. Henning
> Thienemann seems to prefer the term viewL. Alexander says that Edward Kmett
> says that uncons/unsnoc is the more common term. Personally, I find uncons
> and unsnoc to be more intuitive names. Details:
>
> uncons :: [a] -> Maybe (a, [a])
> uncons [] = Nothing
> uncons (a:as) = Just (a,as)
>
> -- Henning's implementation of "viewR", renamed, looks like
>
> unsnoc :: [a] -> Maybe ([a], a)
> unsnoc = foldr (\x -> Just . forcePair . maybe ([],x) (mapFst (x:)))
> Nothing
>
> I wonder if it would be possible to tease that apart a bit to get the
> maybe out of the loop, which I think might be prettier. The really tricky
> part of unsnoc is making it lazy enough—messing around with it a bit
> suggested that it's very easy to mess up the pair lifting. The tough rule
> seems to be this mouthful, if I'm not mistaken:
>
> unsnoc (xs ++ (y : _|_)) = Just (xs ++ _|_, _|_)
>
> David
>
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://www.haskell.org/mailman/listinfo/libraries
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/libraries/attachments/20140720/62baf1b3/attachment.html>


More information about the Libraries mailing list