prelude-safeenum
A redefinition of the Prelude’s Enum
class in order to render it
safe. That is, the Haskell Language Report defines pred
, succ
,
fromEnum
, and toEnum
to be partial functions when the type is
Bounded
. This is unacceptable. We define a new type-class hierarchy
for enumeration which is safe and also generalizes to cover types
which can only be enumerated in one direction.
Install
This is a very simple package and should be easy to install. You
should be able to use the standard:
$> cabal install prelude-safeenum
Portability
An attempt has been made to keep this library portable; however,
it does rely on a few language extensions. All the required language
extensions are:
- CPP
- GeneralizedNewtypeDeriving
- MagicHash - only for GHC
- Trustworthy - only for GHC >= 7.1
The GeneralizedNewtypeDeriving extension is used for brevity in
Data.Number.CalkinWilf. If you’d like to use this package with a
compiler that does not support that extension, contact the maintainer
and it can be removed.
This package is only “Trustworthy” rather than “Safe” for two
reasons: (1) Data.Number.CalkinWilf uses GeneralizedNewtypeDeriving,
and (2) Prelude.SafeEnum imports GHC.Exts for build/foldr fusion
and for the Char instances.
Links