
18 Jul
2014
18 Jul
'14
5:19 p.m.
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 ...