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 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.