What I'd like for Data.List is
uncons :: [a] -> Maybe (a, [a]).
uncons [] = Nothing
uncons (a:as) = Just (a,as)I believe Data.Text and maybe even Data.ByteString have similar functions. The main reason, I think:
The idiom
do
x <- listToMaybe xss
...
... tail xss
...is a bit ugly as the safety of tail xs depends implicitly on the fact that listToMaybe guards it, and because it treats the head and tail completely differently. Far prettier:
do
(x,xs) <- uncons xss
...
_______________________________________________
Libraries mailing list
Libraries@haskell.org
http://www.haskell.org/mailman/listinfo/libraries