plaid-0.1.0.0: Data/Proof/Named.hs
{-# LANGUAGE Rank2Types #-}
module Data.Proof.Named
( Named
, name
, unWrapNamed
) where
newtype Named n a = Named { forgetName :: a } deriving Show
name :: a -> ( forall name. Named name a -> r ) -> r
name x f = f ( Named x )
unWrapNamed :: Named n a -> a
unWrapNamed = forgetName