intensional-datatys-0.2.0.0: A GHC Core plugin for intensional datatype refinement checking
Safe HaskellNone
LanguageHaskell2010

Intensional.Types

Documentation

type RVar = Int Source #

class Refined t where Source #

Methods

domain :: t -> Domain Source #

rename :: RVar -> RVar -> t -> t Source #

prpr :: (RVar -> SDoc) -> t -> SDoc Source #

Instances

Instances details
Refined Guard Source # 
Instance details

Defined in Intensional.Guard

Refined ConstraintSet Source # 
Instance details

Defined in Intensional.Constraints

Outputable d => Refined (TypeGen d) Source # 
Instance details

Defined in Intensional.Types

Methods

domain :: TypeGen d -> Domain Source #

rename :: RVar -> RVar -> TypeGen d -> TypeGen d Source #

prpr :: (RVar -> SDoc) -> TypeGen d -> SDoc Source #

Outputable d => Refined (DataType d) Source # 
Instance details

Defined in Intensional.Types

Refined (K l) Source # 
Instance details

Defined in Intensional.Constructors

Methods

domain :: K l -> Domain Source #

rename :: RVar -> RVar -> K l -> K l Source #

prpr :: (RVar -> SDoc) -> K l -> SDoc Source #

Outputable d => Refined (SchemeGen d) Source # 
Instance details

Defined in Intensional.Scheme

Refined b => Refined (Map a b) Source # 
Instance details

Defined in Intensional.Types

Methods

domain :: Map a b -> Domain Source #

rename :: RVar -> RVar -> Map a b -> Map a b Source #

prpr :: (RVar -> SDoc) -> Map a b -> SDoc Source #

Refined (Constraint l r) Source # 
Instance details

Defined in Intensional.Constraints

Methods

domain :: Constraint l r -> Domain Source #

rename :: RVar -> RVar -> Constraint l r -> Constraint l r Source #

prpr :: (RVar -> SDoc) -> Constraint l r -> SDoc Source #

data DataType d Source #

Constructors

Base d 
Inj RVar d 

Instances

Instances details
Functor DataType Source # 
Instance details

Defined in Intensional.Types

Methods

fmap :: (a -> b) -> DataType a -> DataType b #

(<$) :: a -> DataType b -> DataType a #

Foldable DataType Source # 
Instance details

Defined in Intensional.Types

Methods

fold :: Monoid m => DataType m -> m #

foldMap :: Monoid m => (a -> m) -> DataType a -> m #

foldMap' :: Monoid m => (a -> m) -> DataType a -> m #

foldr :: (a -> b -> b) -> b -> DataType a -> b #

foldr' :: (a -> b -> b) -> b -> DataType a -> b #

foldl :: (b -> a -> b) -> b -> DataType a -> b #

foldl' :: (b -> a -> b) -> b -> DataType a -> b #

foldr1 :: (a -> a -> a) -> DataType a -> a #

foldl1 :: (a -> a -> a) -> DataType a -> a #

toList :: DataType a -> [a] #

null :: DataType a -> Bool #

length :: DataType a -> Int #

elem :: Eq a => a -> DataType a -> Bool #

maximum :: Ord a => DataType a -> a #

minimum :: Ord a => DataType a -> a #

sum :: Num a => DataType a -> a #

product :: Num a => DataType a -> a #

Traversable DataType Source # 
Instance details

Defined in Intensional.Types

Methods

traverse :: Applicative f => (a -> f b) -> DataType a -> f (DataType b) #

sequenceA :: Applicative f => DataType (f a) -> f (DataType a) #

mapM :: Monad m => (a -> m b) -> DataType a -> m (DataType b) #

sequence :: Monad m => DataType (m a) -> m (DataType a) #

Eq d => Eq (DataType d) Source # 
Instance details

Defined in Intensional.Types

Methods

(==) :: DataType d -> DataType d -> Bool #

(/=) :: DataType d -> DataType d -> Bool #

Generic (DataType d) Source # 
Instance details

Defined in Intensional.Types

Associated Types

type Rep (DataType d) :: Type -> Type #

Methods

from :: DataType d -> Rep (DataType d) x #

to :: Rep (DataType d) x -> DataType d #

Hashable d => Hashable (DataType d) Source # 
Instance details

Defined in Intensional.Types

Methods

hashWithSalt :: Int -> DataType d -> Int #

hash :: DataType d -> Int #

Binary d => Binary (DataType d) Source # 
Instance details

Defined in Intensional.Types

Methods

put_ :: BinHandle -> DataType d -> IO () #

put :: BinHandle -> DataType d -> IO (Bin (DataType d)) #

get :: BinHandle -> IO (DataType d) #

Outputable d => Outputable (DataType d) Source # 
Instance details

Defined in Intensional.Types

Methods

ppr :: DataType d -> SDoc #

pprPrec :: Rational -> DataType d -> SDoc #

Outputable d => Refined (DataType d) Source # 
Instance details

Defined in Intensional.Types

type Rep (DataType d) Source # 
Instance details

Defined in Intensional.Types

data TypeGen d Source #

Constructors

Var Name 
App (TypeGen d) (TypeGen d) 
Data (DataType d) [TypeGen d] 
(TypeGen d) :=> (TypeGen d) 
Lit IfaceTyLit 
Ambiguous 

Instances

Instances details
Functor TypeGen Source # 
Instance details

Defined in Intensional.Types

Methods

fmap :: (a -> b) -> TypeGen a -> TypeGen b #

(<$) :: a -> TypeGen b -> TypeGen a #

Foldable TypeGen Source # 
Instance details

Defined in Intensional.Types

Methods

fold :: Monoid m => TypeGen m -> m #

foldMap :: Monoid m => (a -> m) -> TypeGen a -> m #

foldMap' :: Monoid m => (a -> m) -> TypeGen a -> m #

foldr :: (a -> b -> b) -> b -> TypeGen a -> b #

foldr' :: (a -> b -> b) -> b -> TypeGen a -> b #

foldl :: (b -> a -> b) -> b -> TypeGen a -> b #

foldl' :: (b -> a -> b) -> b -> TypeGen a -> b #

foldr1 :: (a -> a -> a) -> TypeGen a -> a #

foldl1 :: (a -> a -> a) -> TypeGen a -> a #

toList :: TypeGen a -> [a] #

null :: TypeGen a -> Bool #

length :: TypeGen a -> Int #

elem :: Eq a => a -> TypeGen a -> Bool #

maximum :: Ord a => TypeGen a -> a #

minimum :: Ord a => TypeGen a -> a #

sum :: Num a => TypeGen a -> a #

product :: Num a => TypeGen a -> a #

Traversable TypeGen Source # 
Instance details

Defined in Intensional.Types

Methods

traverse :: Applicative f => (a -> f b) -> TypeGen a -> f (TypeGen b) #

sequenceA :: Applicative f => TypeGen (f a) -> f (TypeGen a) #

mapM :: Monad m => (a -> m b) -> TypeGen a -> m (TypeGen b) #

sequence :: Monad m => TypeGen (m a) -> m (TypeGen a) #

Binary d => Binary (TypeGen d) Source # 
Instance details

Defined in Intensional.Types

Methods

put_ :: BinHandle -> TypeGen d -> IO () #

put :: BinHandle -> TypeGen d -> IO (Bin (TypeGen d)) #

get :: BinHandle -> IO (TypeGen d) #

Outputable d => Outputable (TypeGen d) Source # 
Instance details

Defined in Intensional.Types

Methods

ppr :: TypeGen d -> SDoc #

pprPrec :: Rational -> TypeGen d -> SDoc #

Outputable d => Refined (TypeGen d) Source # 
Instance details

Defined in Intensional.Types

Methods

domain :: TypeGen d -> Domain Source #

rename :: RVar -> RVar -> TypeGen d -> TypeGen d Source #

prpr :: (RVar -> SDoc) -> TypeGen d -> SDoc Source #