static-closure-0.1.0.0: src/Control/Static/Closure/IsPureClosure.hs
{-# LANGUAGE TypeFamilies #-}
module Control.Static.Closure.IsPureClosure where
import Control.Static.Closure.IsClosure (IsClosure(unclosure))
import GHC.Exts (Constraint)
class IsClosure t => IsPureClosure t where
type ClosureConstraint t a :: Constraint
cpure :: ClosureConstraint t a => a -> t a
cfmap :: ClosureConstraint t b => (a -> b) -> t a -> t b
cfmap f = cpure . f . unclosure