| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Mikan.Utils.Empty
Description
An empty type with some useful instances.
Synopsis
- data Empty
- absurd :: Empty -> a
- toImpossible :: Empty -> IO Impossible
Documentation
A type with no inhabitants.
Note that Empty and Void are NOT interchangable,
as they have different NFData instances. In particular,
the NFData instance for Void forces the value. This
is typically not desirable, as we often want to use Empty as a proxy
for an __IMPOSSIBLE__.
toImpossible :: Empty -> IO Impossible Source #
toImpossible e extracts the Impossible value raised via
__IMPOSSIBLE__ to create the element e of type Empty.
It proceeds by evaluating e to weak head normal form and
catching the exception.
We are forced to wrap things in a Maybe because of
catchImpossible's type.