module Data.HList (
module Data.HList.CommonMain,
module Data.HList.GhcSyntax,
module Data.HList.GhcRecord,
module Data.HList.GhcExperiments,
module Data.STRef,
module Data.IORef,
module Data.Typeable,
module Control.Monad,
module Control.Monad.ST,
module Control.Monad.Fix,
concrete,
(#)
) where
import Data.HList.CommonMain hiding ( HDeleteMany
, hDeleteMany
, TypeCast
, typeCast
)
import Data.HList.GhcSyntax
import Data.HList.GhcRecord
import Data.HList.GhcExperiments
import Data.STRef
import Data.IORef
import Data.Typeable
import Control.Monad
import Control.Monad.ST
import Control.Monad.Fix
infixr 9 #
(#) :: (HasField l r v) => r -> l -> v
m # field = (m .!. field)
concrete :: (MonadFix m) => (a -> m a) -> a -> m a
concrete generator self = generator self
where
_ = mfix generator