reactive-thread-0.3.1.0: Data/Any.hs
{-# LANGUAGE GADTs #-}
module Data.Any
( Any0(..)
, any0
, Any1(..)
, any1
) where
import Unsafe.Coerce
-- | Contains any value.
data Any0 where Any0 :: a -> Any0
-- | Unwraps any value.
--
-- > 'any0' . 'Any0' = 'id'
any0 :: Any0 -> a
any0 (Any0 x) = unsafeCoerce x
-- | Contains any value with kind @* -> *@.
data Any1 k1 where Any1 :: k1 a -> Any1 k1
-- | Unwraps any value with kind @* -> *@.
--
-- > 'any1' . 'Any1' = 'id'
any1 :: Any1 k1 -> k1 a
any1 (Any1 x) = unsafeCoerce x