{-# LANGUAGE DeriveFunctor #-} module Asm.BB ( BB (..) ) where import Data.Copointed data BB arch reg freg a b = BB { forall (arch :: * -> * -> * -> *) reg freg a b. BB arch reg freg a b -> [arch reg freg a] unBB :: [arch reg freg a], forall (arch :: * -> * -> * -> *) reg freg a b. BB arch reg freg a b -> b caBB :: b } deriving ((forall a b. (a -> b) -> BB arch reg freg a a -> BB arch reg freg a b) -> (forall a b. a -> BB arch reg freg a b -> BB arch reg freg a a) -> Functor (BB arch reg freg a) forall a b. a -> BB arch reg freg a b -> BB arch reg freg a a forall a b. (a -> b) -> BB arch reg freg a a -> BB arch reg freg a b forall (f :: * -> *). (forall a b. (a -> b) -> f a -> f b) -> (forall a b. a -> f b -> f a) -> Functor f forall (arch :: * -> * -> * -> *) reg freg a a b. a -> BB arch reg freg a b -> BB arch reg freg a a forall (arch :: * -> * -> * -> *) reg freg a a b. (a -> b) -> BB arch reg freg a a -> BB arch reg freg a b $cfmap :: forall (arch :: * -> * -> * -> *) reg freg a a b. (a -> b) -> BB arch reg freg a a -> BB arch reg freg a b fmap :: forall a b. (a -> b) -> BB arch reg freg a a -> BB arch reg freg a b $c<$ :: forall (arch :: * -> * -> * -> *) reg freg a a b. a -> BB arch reg freg a b -> BB arch reg freg a a <$ :: forall a b. a -> BB arch reg freg a b -> BB arch reg freg a a Functor) instance Copointed (BB arch reg freg a) where copoint :: forall a. BB arch reg freg a a -> a copoint=BB arch reg freg a a -> a forall (arch :: * -> * -> * -> *) reg freg a b. BB arch reg freg a b -> b caBB