kempe-0.1.1.2: Kempe compiler
Safe HaskellNone
LanguageHaskell2010

Kempe.AST.Size

Contents

Description

Frontend AST | This module is split out so that the bakend/IR need not depend on everything in AST.

Synopsis

Documentation

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

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) = D1 ('MetaData "StackType" "Kempe.AST.Size" "kempe-0.1.1.2-inplace-kempe-modules" 'False) (C1 ('MetaCons "StackType" 'PrefixI 'True) (S1 ('MetaSel ('Just "quantify") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Set (Name b))) :*: (S1 ('MetaSel ('Just "inTypes") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [KempeTy b]) :*: S1 ('MetaSel ('Just "outTypes") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [KempeTy b]))))

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

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.2-inplace-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 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.2-inplace-kempe-modules" 'False) (C1 ('MetaCons "Cabi" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Kabi" 'PrefixI 'False) (U1 :: Type -> Type))

Sizing bits

type Size = [Int64] -> Int64 Source #

size :: SizeEnv -> KempeTy a -> Size Source #

Don't call this on ill-kinded types; it won't throw any error.