[[!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. """]]