rere-0.1: src/RERE/Absurd.hs
{-# LANGUAGE CPP #-}
#if __GLASGOW_HASKELL__ >=704
{-# LANGUAGE Safe #-}
#elif __GLASGOW_HASKELL__ >=702
{-# LANGUAGE Trustworthy #-}
#endif
-- | Absurd i.e. not inhabited types.
module RERE.Absurd (Absurd (..), vacuous) where
import qualified Data.Void as Void
-- | A vendored 'Absurd' from https://hackage.haskell.org/package/boring
--
-- We only need 'Void' instance.
class Absurd a where
absurd :: a -> b
instance Absurd Void.Void where
absurd = Void.absurd
-- | @fmap absurd@.
vacuous :: (Functor f, Absurd a) => f a -> f b
vacuous = fmap absurd