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 oftail.
This package is divided into three modules:
Safecontains safe variants ofPreludeandData.Listfunctions.Safe.Foldablecontains safe variants ofFoldablefunctions.Safe.Exactcreates crashing versions of functions likezip(errors if the lists are not equal) andtake(errors if there are not enough elements), then wraps them to provide safe variants.