| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
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
- data KempeTy a
- data StackType b = StackType {}
- type MonoStackType = ([KempeTy ()], [KempeTy ()])
- data BuiltinTy
- data ABI
- prettyMonoStackType :: MonoStackType -> Doc a
- type SizeEnv = IntMap Size
- type Size = [Int64] -> Int64
- cSize :: Size -> Int64
- size :: SizeEnv -> KempeTy a -> Size
- size' :: SizeEnv -> KempeTy a -> Int64
- sizeStack :: SizeEnv -> [KempeTy a] -> Int64
Documentation
Constructors
| TyBuiltin a BuiltinTy | |
| TyNamed a (TyName a) | |
| TyVar a (Name a) | |
| TyApp a (KempeTy a) (KempeTy a) |
Instances
Instances
| Eq b => Eq (StackType b) Source # | |
| Ord b => Ord (StackType b) Source # | |
Defined in Kempe.AST.Size | |
| Generic (StackType b) Source # | |
| NFData b => NFData (StackType b) Source # | |
Defined in Kempe.AST.Size | |
| Pretty (StackType a) Source # | |
Defined in Kempe.AST.Size | |
| type Rep (StackType b) Source # | |
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 #
Instances
| Eq BuiltinTy Source # | |
| Ord BuiltinTy Source # | |
| Generic BuiltinTy Source # | |
| NFData BuiltinTy Source # | |
Defined in Kempe.AST.Size | |
| Pretty BuiltinTy Source # | |
Defined in Kempe.AST.Size | |
| type Rep BuiltinTy Source # | |
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))) | |
prettyMonoStackType :: MonoStackType -> Doc a Source #