Skip to content
Haskell library for safe (pattern match free) functions
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
.gitignore Add Stack to the gitignore Jun 18, 2017
.travis.yml Support GHC 8.8 Sep 2, 2019
CHANGES.txt Stop supporting GHC 7.4 to 7.8 Feb 26, 2019
LICENSE Update Sep 7, 2018 Update README badges Mar 21, 2019
Safe.hs Improve the display of errors, less internal callstack Mar 9, 2018

Safe Hackage version Stackage version Build status

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.

This package is divided into three modules:

  • Safe contains safe variants of Prelude and Data.List functions.
  • Safe.Foldable contains safe variants of Foldable functions.
  • Safe.Exact creates crashing versions of functions like zip (errors if the lists are not equal) and take (errors if there are not enough elements), then wraps them to provide safe variants.
You can’t perform that action at this time.