[[!comment format=mdwn
 username="https://www.google.com/accounts/o8/id?id=AItOawnq-RfkVpFN15SWvQ2lpSGAi0XpNQuLxKM"
 nickname="Yuval"
 subject="What about safe?"
 date="2014-07-06T10:45:59Z"
 content="""
https://hackage.haskell.org/package/safe

> A library wrapping Prelude/Data.List functions that can throw exceptions, such as head and !!. Each unsafe function has up to four variants, e.g. with tail:
> 
>     tail :: [a] -> [a], raises an error on tail [].

>     tailMay :: [a] -> Maybe [a], turns errors into Nothing.

>     tailDef :: [a] -> [a] -> [a], takes a default to return on errors.

>     tailNote :: String -> [a] -> [a], takes an extra argument which supplements the error message.

>     tailSafe :: [a] -> [a], returns some sensible default if possible, [] in the case of tail.
"""]]