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:
Safe
contains safe variants ofPrelude
andData.List
functions.Safe.Foldable
contains safe variants ofFoldable
functions.Safe.Exact
creates 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.