kempe-0.1.1.1: Kempe compiler
Safe HaskellNone
LanguageHaskell2010

Kempe.AST

Description

Frontend AST

Synopsis

Documentation

data ConsAnn a Source #

Annotation carried on constructors to keep size information through the IR generation phase.

Constructors

ConsAnn 

Fields

Instances

Instances details
Functor ConsAnn Source # 
Instance details

Defined in Kempe.AST

Methods

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

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

Foldable ConsAnn Source # 
Instance details

Defined in Kempe.AST

Methods

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

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

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

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

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

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

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

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

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

toList :: ConsAnn a -> [a] #

null :: ConsAnn a -> Bool #

length :: ConsAnn a -> Int #

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

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

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

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

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

Traversable ConsAnn Source # 
Instance details

Defined in Kempe.AST

Methods

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

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

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

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

Generic (ConsAnn a) Source # 
Instance details

Defined in Kempe.AST

Associated Types

type Rep (ConsAnn a) :: Type -> Type #

Methods

from :: ConsAnn a -> Rep (ConsAnn a) x #

to :: Rep (ConsAnn a) x -> ConsAnn a #

NFData a => NFData (ConsAnn a) Source # 
Instance details

Defined in Kempe.AST

Methods

rnf :: ConsAnn a -> () #

Pretty a => Pretty (ConsAnn a) Source # 
Instance details

Defined in Kempe.AST

Methods

pretty :: ConsAnn a -> Doc ann #

prettyList :: [ConsAnn a] -> Doc ann #

type Rep (ConsAnn a) Source # 
Instance details

Defined in Kempe.AST

type Rep (ConsAnn a) = D1 ('MetaData "ConsAnn" "Kempe.AST" "kempe-0.1.1.1-EFnLFVNjuQo99bQNXiXMKL-kempe-modules" 'False) (C1 ('MetaCons "ConsAnn" 'PrefixI 'True) (S1 ('MetaSel ('Just "tySz") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int64) :*: (S1 ('MetaSel ('Just "tag") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word8) :*: S1 ('MetaSel ('Just "consTy") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))))

data Atom c b Source #

Constructors

AtName b (Name b) 
Case b (NonEmpty (Pattern c b, [Atom c b])) 
If b [Atom c b] [Atom c b] 
Dip b [Atom c b] 
IntLit b Integer 
WordLit b Natural 
Int8Lit b Int8 
BoolLit b Bool 
AtBuiltin b BuiltinFn 
AtCons c (TyName c) 

Instances

Instances details
Bifunctor Atom Source # 
Instance details

Defined in Kempe.AST

Methods

bimap :: (a -> b) -> (c -> d) -> Atom a c -> Atom b d #

first :: (a -> b) -> Atom a c -> Atom b c #

second :: (b -> c) -> Atom a b -> Atom a c #

Functor (Atom c) Source # 
Instance details

Defined in Kempe.AST

Methods

fmap :: (a -> b) -> Atom c a -> Atom c b #

(<$) :: a -> Atom c b -> Atom c a #

Foldable (Atom c) Source # 
Instance details

Defined in Kempe.AST

Methods

fold :: Monoid m => Atom c m -> m #

foldMap :: Monoid m => (a -> m) -> Atom c a -> m #

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

foldr :: (a -> b -> b) -> b -> Atom c a -> b #

foldr' :: (a -> b -> b) -> b -> Atom c a -> b #

foldl :: (b -> a -> b) -> b -> Atom c a -> b #

foldl' :: (b -> a -> b) -> b -> Atom c a -> b #

foldr1 :: (a -> a -> a) -> Atom c a -> a #

foldl1 :: (a -> a -> a) -> Atom c a -> a #

toList :: Atom c a -> [a] #

null :: Atom c a -> Bool #

length :: Atom c a -> Int #

elem :: Eq a => a -> Atom c a -> Bool #

maximum :: Ord a => Atom c a -> a #

minimum :: Ord a => Atom c a -> a #

sum :: Num a => Atom c a -> a #

product :: Num a => Atom c a -> a #

Traversable (Atom c) Source # 
Instance details

Defined in Kempe.AST

Methods

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

sequenceA :: Applicative f => Atom c (f a) -> f (Atom c a) #

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

sequence :: Monad m => Atom c (m a) -> m (Atom c a) #

(Eq b, Eq c) => Eq (Atom c b) Source # 
Instance details

Defined in Kempe.AST

Methods

(==) :: Atom c b -> Atom c b -> Bool #

(/=) :: Atom c b -> Atom c b -> Bool #

(Ord b, Ord c) => Ord (Atom c b) Source # 
Instance details

Defined in Kempe.AST

Methods

compare :: Atom c b -> Atom c b -> Ordering #

(<) :: Atom c b -> Atom c b -> Bool #

(<=) :: Atom c b -> Atom c b -> Bool #

(>) :: Atom c b -> Atom c b -> Bool #

(>=) :: Atom c b -> Atom c b -> Bool #

max :: Atom c b -> Atom c b -> Atom c b #

min :: Atom c b -> Atom c b -> Atom c b #

Generic (Atom c b) Source # 
Instance details

Defined in Kempe.AST

Associated Types

type Rep (Atom c b) :: Type -> Type #

Methods

from :: Atom c b -> Rep (Atom c b) x #

to :: Rep (Atom c b) x -> Atom c b #

(NFData b, NFData c) => NFData (Atom c b) Source # 
Instance details

Defined in Kempe.AST

Methods

rnf :: Atom c b -> () #

Pretty (Atom c a) Source # 
Instance details

Defined in Kempe.AST

Methods

pretty :: Atom c a -> Doc ann #

prettyList :: [Atom c a] -> Doc ann #

type Rep (Atom c b) Source # 
Instance details

Defined in Kempe.AST

type Rep (Atom c b)

data BuiltinFn Source #

Instances

Instances details
Eq BuiltinFn Source # 
Instance details

Defined in Kempe.AST

Ord BuiltinFn Source # 
Instance details

Defined in Kempe.AST

Generic BuiltinFn Source # 
Instance details

Defined in Kempe.AST

Associated Types

type Rep BuiltinFn :: Type -> Type #

NFData BuiltinFn Source # 
Instance details

Defined in Kempe.AST

Methods

rnf :: BuiltinFn -> () #

Pretty BuiltinFn Source # 
Instance details

Defined in Kempe.AST

Methods

pretty :: BuiltinFn -> Doc ann #

prettyList :: [BuiltinFn] -> Doc ann #

type Rep BuiltinFn Source # 
Instance details

Defined in Kempe.AST

type Rep BuiltinFn = D1 ('MetaData "BuiltinFn" "Kempe.AST" "kempe-0.1.1.1-EFnLFVNjuQo99bQNXiXMKL-kempe-modules" 'False) ((((C1 ('MetaCons "Drop" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Swap" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Dup" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "IntPlus" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "IntMinus" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "IntTimes" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "IntDiv" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "IntMod" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "IntEq" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "IntLeq" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "IntLt" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "IntGeq" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "IntGt" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "IntNeq" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "IntShiftR" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "IntShiftL" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "IntXor" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "WordPlus" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "WordTimes" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "WordMinus" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "WordDiv" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "WordMod" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "WordShiftR" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "WordShiftL" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "WordXor" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "And" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "Or" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Xor" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "IntNeg" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Popcount" 'PrefixI 'False) (U1 :: Type -> Type))))))

data KempeDecl a c b Source #

Constructors

TyDecl a (TyName a) [Name a] [(TyName b, [KempeTy a])] 
FunDecl b (Name b) [KempeTy a] [KempeTy a] [Atom c b] 
ExtFnDecl b (Name b) [KempeTy a] [KempeTy a] ByteString 
Export b ABI (Name b) 

Instances

Instances details
Bifunctor (KempeDecl a) Source # 
Instance details

Defined in Kempe.AST

Methods

bimap :: (a0 -> b) -> (c -> d) -> KempeDecl a a0 c -> KempeDecl a b d #

first :: (a0 -> b) -> KempeDecl a a0 c -> KempeDecl a b c #

second :: (b -> c) -> KempeDecl a a0 b -> KempeDecl a a0 c #

Functor (KempeDecl a c) Source # 
Instance details

Defined in Kempe.AST

Methods

fmap :: (a0 -> b) -> KempeDecl a c a0 -> KempeDecl a c b #

(<$) :: a0 -> KempeDecl a c b -> KempeDecl a c a0 #

Foldable (KempeDecl a c) Source # 
Instance details

Defined in Kempe.AST

Methods

fold :: Monoid m => KempeDecl a c m -> m #

foldMap :: Monoid m => (a0 -> m) -> KempeDecl a c a0 -> m #

foldMap' :: Monoid m => (a0 -> m) -> KempeDecl a c a0 -> m #

foldr :: (a0 -> b -> b) -> b -> KempeDecl a c a0 -> b #

foldr' :: (a0 -> b -> b) -> b -> KempeDecl a c a0 -> b #

foldl :: (b -> a0 -> b) -> b -> KempeDecl a c a0 -> b #

foldl' :: (b -> a0 -> b) -> b -> KempeDecl a c a0 -> b #

foldr1 :: (a0 -> a0 -> a0) -> KempeDecl a c a0 -> a0 #

foldl1 :: (a0 -> a0 -> a0) -> KempeDecl a c a0 -> a0 #

toList :: KempeDecl a c a0 -> [a0] #

null :: KempeDecl a c a0 -> Bool #

length :: KempeDecl a c a0 -> Int #

elem :: Eq a0 => a0 -> KempeDecl a c a0 -> Bool #

maximum :: Ord a0 => KempeDecl a c a0 -> a0 #

minimum :: Ord a0 => KempeDecl a c a0 -> a0 #

sum :: Num a0 => KempeDecl a c a0 -> a0 #

product :: Num a0 => KempeDecl a c a0 -> a0 #

Traversable (KempeDecl a c) Source # 
Instance details

Defined in Kempe.AST

Methods

traverse :: Applicative f => (a0 -> f b) -> KempeDecl a c a0 -> f (KempeDecl a c b) #

sequenceA :: Applicative f => KempeDecl a c (f a0) -> f (KempeDecl a c a0) #

mapM :: Monad m => (a0 -> m b) -> KempeDecl a c a0 -> m (KempeDecl a c b) #

sequence :: Monad m => KempeDecl a c (m a0) -> m (KempeDecl a c a0) #

(Eq a, Eq b, Eq c) => Eq (KempeDecl a c b) Source # 
Instance details

Defined in Kempe.AST

Methods

(==) :: KempeDecl a c b -> KempeDecl a c b -> Bool #

(/=) :: KempeDecl a c b -> KempeDecl a c b -> Bool #

(Ord a, Ord b, Ord c) => Ord (KempeDecl a c b) Source # 
Instance details

Defined in Kempe.AST

Methods

compare :: KempeDecl a c b -> KempeDecl a c b -> Ordering #

(<) :: KempeDecl a c b -> KempeDecl a c b -> Bool #

(<=) :: KempeDecl a c b -> KempeDecl a c b -> Bool #

(>) :: KempeDecl a c b -> KempeDecl a c b -> Bool #

(>=) :: KempeDecl a c b -> KempeDecl a c b -> Bool #

max :: KempeDecl a c b -> KempeDecl a c b -> KempeDecl a c b #

min :: KempeDecl a c b -> KempeDecl a c b -> KempeDecl a c b #

Generic (KempeDecl a c b) Source # 
Instance details

Defined in Kempe.AST

Associated Types

type Rep (KempeDecl a c b) :: Type -> Type #

Methods

from :: KempeDecl a c b -> Rep (KempeDecl a c b) x #

to :: Rep (KempeDecl a c b) x -> KempeDecl a c b #

(NFData a, NFData b, NFData c) => NFData (KempeDecl a c b) Source # 
Instance details

Defined in Kempe.AST

Methods

rnf :: KempeDecl a c b -> () #

Pretty (KempeDecl a b c) Source # 
Instance details

Defined in Kempe.AST

Methods

pretty :: KempeDecl a b c -> Doc ann #

prettyList :: [KempeDecl a b c] -> Doc ann #

type Rep (KempeDecl a c b) Source # 
Instance details

Defined in Kempe.AST

type Rep (KempeDecl a c b)

data Pattern c b Source #

Constructors

PatternInt b Integer 
PatternCons 

Fields

PatternWildcard b 
PatternBool b Bool 

Instances

Instances details
Bifunctor Pattern Source # 
Instance details

Defined in Kempe.AST

Methods

bimap :: (a -> b) -> (c -> d) -> Pattern a c -> Pattern b d #

first :: (a -> b) -> Pattern a c -> Pattern b c #

second :: (b -> c) -> Pattern a b -> Pattern a c #

Functor (Pattern c) Source # 
Instance details

Defined in Kempe.AST

Methods

fmap :: (a -> b) -> Pattern c a -> Pattern c b #

(<$) :: a -> Pattern c b -> Pattern c a #

Foldable (Pattern c) Source # 
Instance details

Defined in Kempe.AST

Methods

fold :: Monoid m => Pattern c m -> m #

foldMap :: Monoid m => (a -> m) -> Pattern c a -> m #

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

foldr :: (a -> b -> b) -> b -> Pattern c a -> b #

foldr' :: (a -> b -> b) -> b -> Pattern c a -> b #

foldl :: (b -> a -> b) -> b -> Pattern c a -> b #

foldl' :: (b -> a -> b) -> b -> Pattern c a -> b #

foldr1 :: (a -> a -> a) -> Pattern c a -> a #

foldl1 :: (a -> a -> a) -> Pattern c a -> a #

toList :: Pattern c a -> [a] #

null :: Pattern c a -> Bool #

length :: Pattern c a -> Int #

elem :: Eq a => a -> Pattern c a -> Bool #

maximum :: Ord a => Pattern c a -> a #

minimum :: Ord a => Pattern c a -> a #

sum :: Num a => Pattern c a -> a #

product :: Num a => Pattern c a -> a #

Traversable (Pattern c) Source # 
Instance details

Defined in Kempe.AST

Methods

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

sequenceA :: Applicative f => Pattern c (f a) -> f (Pattern c a) #

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

sequence :: Monad m => Pattern c (m a) -> m (Pattern c a) #

(Eq b, Eq c) => Eq (Pattern c b) Source # 
Instance details

Defined in Kempe.AST

Methods

(==) :: Pattern c b -> Pattern c b -> Bool #

(/=) :: Pattern c b -> Pattern c b -> Bool #

(Ord b, Ord c) => Ord (Pattern c b) Source # 
Instance details

Defined in Kempe.AST

Methods

compare :: Pattern c b -> Pattern c b -> Ordering #

(<) :: Pattern c b -> Pattern c b -> Bool #

(<=) :: Pattern c b -> Pattern c b -> Bool #

(>) :: Pattern c b -> Pattern c b -> Bool #

(>=) :: Pattern c b -> Pattern c b -> Bool #

max :: Pattern c b -> Pattern c b -> Pattern c b #

min :: Pattern c b -> Pattern c b -> Pattern c b #

Generic (Pattern c b) Source # 
Instance details

Defined in Kempe.AST

Associated Types

type Rep (Pattern c b) :: Type -> Type #

Methods

from :: Pattern c b -> Rep (Pattern c b) x #

to :: Rep (Pattern c b) x -> Pattern c b #

(NFData b, NFData c) => NFData (Pattern c b) Source # 
Instance details

Defined in Kempe.AST

Methods

rnf :: Pattern c b -> () #

Pretty (Pattern c a) Source # 
Instance details

Defined in Kempe.AST

Methods

pretty :: Pattern c a -> Doc ann #

prettyList :: [Pattern c a] -> Doc ann #

type Rep (Pattern c b) Source # 
Instance details

Defined in Kempe.AST

type Rep (Pattern c b)

type Declarations a c b = [KempeDecl a c b] Source #

data Module a c b Source #

Constructors

Module 

Fields

Instances

Instances details
Generic (Module a c b) Source # 
Instance details

Defined in Kempe.AST

Associated Types

type Rep (Module a c b) :: Type -> Type #

Methods

from :: Module a c b -> Rep (Module a c b) x #

to :: Rep (Module a c b) x -> Module a c b #

(NFData a, NFData b, NFData c) => NFData (Module a c b) Source # 
Instance details

Defined in Kempe.AST

Methods

rnf :: Module a c b -> () #

type Rep (Module a c b) Source # 
Instance details

Defined in Kempe.AST

type Rep (Module a c b) = D1 ('MetaData "Module" "Kempe.AST" "kempe-0.1.1.1-EFnLFVNjuQo99bQNXiXMKL-kempe-modules" 'False) (C1 ('MetaCons "Module" 'PrefixI 'True) (S1 ('MetaSel ('Just "importFps") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ByteString]) :*: S1 ('MetaSel ('Just "body") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [KempeDecl a c b])))

data ABI Source #

Constructors

Cabi 
Kabi 

Instances

Instances details
Eq ABI Source # 
Instance details

Defined in Kempe.AST.Size

Methods

(==) :: ABI -> ABI -> Bool #

(/=) :: ABI -> ABI -> Bool #

Ord ABI Source # 
Instance details

Defined in Kempe.AST.Size

Methods

compare :: ABI -> ABI -> Ordering #

(<) :: ABI -> ABI -> Bool #

(<=) :: ABI -> ABI -> Bool #

(>) :: ABI -> ABI -> Bool #

(>=) :: ABI -> ABI -> Bool #

max :: ABI -> ABI -> ABI #

min :: ABI -> ABI -> ABI #

Generic ABI Source # 
Instance details

Defined in Kempe.AST.Size

Associated Types

type Rep ABI :: Type -> Type #

Methods

from :: ABI -> Rep ABI x #

to :: Rep ABI x -> ABI #

NFData ABI Source # 
Instance details

Defined in Kempe.AST.Size

Methods

rnf :: ABI -> () #

Pretty ABI Source # 
Instance details

Defined in Kempe.AST.Size

Methods

pretty :: ABI -> Doc ann #

prettyList :: [ABI] -> Doc ann #

type Rep ABI Source # 
Instance details

Defined in Kempe.AST.Size

type Rep ABI = D1 ('MetaData "ABI" "Kempe.AST.Size" "kempe-0.1.1.1-EFnLFVNjuQo99bQNXiXMKL-kempe-modules" 'False) (C1 ('MetaCons "Cabi" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Kabi" 'PrefixI 'False) (U1 :: Type -> Type))

data BuiltinTy Source #

Constructors

TyInt 
TyBool 
TyInt8 
TyWord 

Instances

Instances details
Eq BuiltinTy Source # 
Instance details

Defined in Kempe.AST.Size

Ord BuiltinTy Source # 
Instance details

Defined in Kempe.AST.Size

Generic BuiltinTy Source # 
Instance details

Defined in Kempe.AST.Size

Associated Types

type Rep BuiltinTy :: Type -> Type #

NFData BuiltinTy Source # 
Instance details

Defined in Kempe.AST.Size

Methods

rnf :: BuiltinTy -> () #

Pretty BuiltinTy Source # 
Instance details

Defined in Kempe.AST.Size

Methods

pretty :: BuiltinTy -> Doc ann #

prettyList :: [BuiltinTy] -> Doc ann #

type Rep BuiltinTy Source # 
Instance details

Defined in Kempe.AST.Size

type Rep BuiltinTy = D1 ('MetaData "BuiltinTy" "Kempe.AST.Size" "kempe-0.1.1.1-EFnLFVNjuQo99bQNXiXMKL-kempe-modules" 'False) ((C1 ('MetaCons "TyInt" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TyBool" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TyInt8" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TyWord" 'PrefixI 'False) (U1 :: Type -> Type)))

data KempeTy a Source #

Constructors

TyBuiltin a BuiltinTy 
TyNamed a (TyName a) 
TyVar a (Name a) 
TyApp a (KempeTy a) (KempeTy a) 

Instances

Instances details
Functor KempeTy Source # 
Instance details

Defined in Kempe.AST.Size

Methods

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

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

Eq a => Eq (KempeTy a) Source # 
Instance details

Defined in Kempe.AST.Size

Methods

(==) :: KempeTy a -> KempeTy a -> Bool #

(/=) :: KempeTy a -> KempeTy a -> Bool #

Ord a => Ord (KempeTy a) Source # 
Instance details

Defined in Kempe.AST.Size

Methods

compare :: KempeTy a -> KempeTy a -> Ordering #

(<) :: KempeTy a -> KempeTy a -> Bool #

(<=) :: KempeTy a -> KempeTy a -> Bool #

(>) :: KempeTy a -> KempeTy a -> Bool #

(>=) :: KempeTy a -> KempeTy a -> Bool #

max :: KempeTy a -> KempeTy a -> KempeTy a #

min :: KempeTy a -> KempeTy a -> KempeTy a #

Generic (KempeTy a) Source # 
Instance details

Defined in Kempe.AST.Size

Associated Types

type Rep (KempeTy a) :: Type -> Type #

Methods

from :: KempeTy a -> Rep (KempeTy a) x #

to :: Rep (KempeTy a) x -> KempeTy a #

NFData a => NFData (KempeTy a) Source # 
Instance details

Defined in Kempe.AST.Size

Methods

rnf :: KempeTy a -> () #

Pretty (KempeTy a) Source # 
Instance details

Defined in Kempe.AST.Size

Methods

pretty :: KempeTy a -> Doc ann #

prettyList :: [KempeTy a] -> Doc ann #

type Rep (KempeTy a) Source # 
Instance details

Defined in Kempe.AST.Size

type Rep (KempeTy a)

data StackType b Source #

Constructors

StackType 

Fields

Instances

Instances details
Eq b => Eq (StackType b) Source # 
Instance details

Defined in Kempe.AST.Size

Methods

(==) :: StackType b -> StackType b -> Bool #

(/=) :: StackType b -> StackType b -> Bool #

Ord b => Ord (StackType b) Source # 
Instance details

Defined in Kempe.AST.Size

Generic (StackType b) Source # 
Instance details

Defined in Kempe.AST.Size

Associated Types

type Rep (StackType b) :: Type -> Type #

Methods

from :: StackType b -> Rep (StackType b) x #

to :: Rep (StackType b) x -> StackType b #

NFData b => NFData (StackType b) Source # 
Instance details

Defined in Kempe.AST.Size

Methods

rnf :: StackType b -> () #

Pretty (StackType a) Source # 
Instance details

Defined in Kempe.AST.Size

Methods

pretty :: StackType a -> Doc ann #

prettyList :: [StackType a] -> Doc ann #

type Rep (StackType b) Source # 
Instance details

Defined in Kempe.AST.Size

type Rep (StackType b)

type MonoStackType = ([KempeTy ()], [KempeTy ()]) Source #

freeVars :: [KempeTy a] -> Set (Name a) Source #

prettyModule :: Module a c b -> Doc ann Source #

I resent this...