{-# LANGUAGE CPP #-}
#if !defined(SAFE) && defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 704
#define UNSAFE
{-# LANGUAGE Unsafe #-}
#endif
#if __GLASGOW_HASKELL__ >= 800
{-# OPTIONS_GHC -Wno-redundant-constraints #-}
#endif
module Data.Void.Unsafe
( unsafeVacuous
, unsafeVacuousM
) where
import Data.Void
#ifdef UNSAFE
import Unsafe.Coerce
#endif
unsafeVacuous :: Functor f => f Void -> f a
#ifdef UNSAFE
unsafeVacuous :: forall (f :: * -> *) a. Functor f => f Void -> f a
unsafeVacuous = f Void -> f a
forall a b. a -> b
unsafeCoerce
#else
unsafeVacuous = fmap absurd
#endif
unsafeVacuousM :: Monad m => m Void -> m a
#ifdef UNSAFE
unsafeVacuousM :: forall (m :: * -> *) a. Monad m => m Void -> m a
unsafeVacuousM = m Void -> m a
forall a b. a -> b
unsafeCoerce
#else
unsafeVacuousM m = m >>= return . absurd
#endif