| Safe Haskell | Safe |
|---|---|
| Language | Haskell2010 |
Cryptol.TypeCheck.Type
Description
This module contains types related to typechecking and the output of the
typechecker. In particular, it should contain the types needed by
interface files (see Interface), which are (kind of)
the output of the typechker.
Synopsis
- data Type
- (=/=) :: Type -> Type -> Prop
- data NominalTypeDef
- type Prop = Type
- data TVar
- data ArgDescr = ArgDescr {}
- data Schema = Forall {}
- tArray :: Type -> Type -> Type
- data TParam = TParam {}
- data TySyn = TySyn {}
- data EnumCon = EnumCon {}
- data ModParam = ModParam {
- mpName :: Ident
- mpQual :: !(Maybe ModName)
- mpIface :: ImpName Name
- mpParameters :: ModParamNames
- data ModParamNames = ModParamNames {}
- tSub :: Type -> Type -> Type
- tMul :: Type -> Type -> Type
- tDiv :: Type -> Type -> Type
- tMod :: Type -> Type -> Type
- tExp :: Type -> Type -> Type
- tMin :: Type -> Type -> Type
- tCeilDiv :: Type -> Type -> Type
- tCeilMod :: Type -> Type -> Type
- tLenFromThenTo :: Type -> Type -> Type -> Type
- class FVS t where
- tNum :: Integral a => a -> Type
- tInf :: Type
- tBit :: Type
- tInteger :: Type
- tRational :: Type
- tFloat :: Type -> Type -> Type
- tIntMod :: Type -> Type
- tWord :: Type -> Type
- tSeq :: Type -> Type -> Type
- tChar :: Type
- tString :: Int -> Type
- tRec :: RecordMap Ident Type -> Type
- tTuple :: [Type] -> Type
- tFun :: Type -> Type -> Type
- tNominal :: NominalType -> [Type] -> Type
- tMono :: Type -> Schema
- data TypeSource
- = TVFromModParam Name
- | TVFromSignature Name
- | TypeWildCard
- | TypeOfRecordField Ident
- | TypeOfTupleField Int
- | TypeOfSeqElement
- | LenOfSeq
- | TypeParamInstNamed Name Ident
- | TypeParamInstPos Name Int
- | DefinitionOf Name
- | LenOfCompGen
- | TypeOfArg ArgDescr
- | TypeOfRes
- | FunApp
- | TypeOfIfCondExpr
- | TypeFromUserAnnotation
- | GeneratorOfListComp
- | CasedExpression
- | ConPat
- | TypeErrorPlaceHolder
- tpName :: TParam -> Maybe Name
- (=#=) :: Type -> Type -> Prop
- (>==) :: Type -> Type -> Prop
- type FunctorParams = Map Ident ModParam
- allParamNames :: FunctorParams -> ModParamNames
- data ModTParam = ModTParam {}
- data ModVParam = ModVParam {}
- mtpParam :: ModTParam -> TParam
- data TPFlavor
- data TVarInfo = TVarInfo {
- tvarSource :: !Range
- tvarDesc :: !TypeSource
- isMono :: Schema -> Maybe Type
- schemaParam :: Name -> TPFlavor
- tySynParam :: Name -> TPFlavor
- propSynParam :: Name -> TPFlavor
- nominalParam :: Name -> TPFlavor
- primParam :: Name -> TPFlavor
- modTyParam :: Name -> TPFlavor
- tpfName :: TPFlavor -> Maybe Name
- data NominalType = NominalType {}
- tvInfo :: TVar -> TVarInfo
- tvUnique :: TVar -> Int
- noArgDescr :: ArgDescr
- tvSourceName :: TypeSource -> Maybe Name
- data TypeWithSource = WithSource {}
- data StructCon = StructCon {}
- quickApply :: Kind -> [a] -> Kind
- kindResult :: Kind -> Kind
- tpVar :: TParam -> TVar
- type SType = Type
- superclassSet :: Prop -> Set Prop
- pFin :: Type -> Prop
- tTwo :: Type
- typeSuperclassSet :: PC -> Set PC
- nominalTypeConTypes :: NominalType -> [(Name, Schema)]
- nominalTypeIsAbstract :: NominalType -> Bool
- isFreeTV :: TVar -> Bool
- isBoundTV :: TVar -> Bool
- tIsError :: Type -> Maybe Type
- tNoUser :: Type -> Type
- tHasErrors :: Type -> Bool
- tIsNat' :: Type -> Maybe Nat'
- tIsNum :: Type -> Maybe Integer
- tIsInf :: Type -> Bool
- tIsVar :: Type -> Maybe TVar
- tIsFun :: Type -> Maybe (Type, Type)
- tIsSeq :: Type -> Maybe (Type, Type)
- tIsBit :: Type -> Bool
- tIsInteger :: Type -> Bool
- tIsIntMod :: Type -> Maybe Type
- tIsRational :: Type -> Bool
- tIsFloat :: Type -> Maybe (Type, Type)
- tIsTuple :: Type -> Maybe [Type]
- tIsRec :: Type -> Maybe (RecordMap Ident Type)
- tIsNominal :: Type -> Maybe (NominalType, [Type])
- tIsBinFun :: TFun -> Type -> Maybe (Type, Type)
- tSplitFun :: TFun -> Type -> [Type]
- pIsFin :: Prop -> Maybe Type
- pIsPrime :: Prop -> Maybe Type
- pIsGeq :: Prop -> Maybe (Type, Type)
- pIsEqual :: Prop -> Maybe (Type, Type)
- pIsZero :: Prop -> Maybe Type
- pIsLogic :: Prop -> Maybe Type
- pIsRing :: Prop -> Maybe Type
- pIsField :: Prop -> Maybe Type
- pIsIntegral :: Prop -> Maybe Type
- pIsRound :: Prop -> Maybe Type
- pIsEq :: Prop -> Maybe Type
- pIsCmp :: Prop -> Maybe Type
- pIsSignedCmp :: Prop -> Maybe Type
- pIsLiteral :: Prop -> Maybe (Type, Type)
- pIsLiteralLessThan :: Prop -> Maybe (Type, Type)
- pIsFLiteral :: Prop -> Maybe (Type, Type, Type, Type)
- pIsTrue :: Prop -> Bool
- pIsWidth :: Prop -> Maybe Type
- pIsValidFloat :: Prop -> Maybe (Type, Type)
- tZero :: Type
- tOne :: Type
- tNat' :: Nat' -> Type
- tError :: Type -> Type
- tf1 :: TFun -> Type -> Type
- tf2 :: TFun -> Type -> Type -> Type
- tf3 :: TFun -> Type -> Type -> Type -> Type
- pZero :: Type -> Prop
- pLogic :: Type -> Prop
- pRing :: Type -> Prop
- pIntegral :: Type -> Prop
- pField :: Type -> Prop
- pRound :: Type -> Prop
- pEq :: Type -> Prop
- pCmp :: Type -> Prop
- pSignedCmp :: Type -> Prop
- pLiteral :: Type -> Type -> Prop
- pLiteralLessThan :: Type -> Type -> Prop
- pHas :: Selector -> Type -> Type -> Prop
- pTrue :: Prop
- pAnd :: [Prop] -> Prop
- pSplitAnd :: Prop -> [Prop]
- pValidFloat :: Type -> Type -> Type
- pPrime :: Type -> Prop
- pNegNumeric :: Prop -> [Prop]
- noFreeVariables :: FVS t => t -> Bool
- freeParams :: FVS t => t -> Set TParam
- addTNames :: PPCfg -> [TParam] -> NameMap -> NameMap
- ppNominalShort :: NominalType -> Doc
- ppNominalFull :: NominalType -> Doc
- pickTVarName :: Kind -> TypeSource -> Int -> Doc
- module Cryptol.TypeCheck.TCon
Documentation
The internal representation of types. These are assumed to be kind correct.
Constructors
| TCon !TCon ![Type] | Type constant with args |
| TVar TVar | Type variable (free or bound) |
| TUser !Name ![Type] !Type | This is just a type annotation, for a type that
was written as a type synonym. It is useful so that we
can use it to report nicer errors.
Example: |
| TRec !(RecordMap Ident Type) | Record type |
| TNominal !NominalType ![Type] | A nominal types |
Instances
data NominalTypeDef Source #
Definition of a nominal type
Instances
| Generic NominalTypeDef Source # | |||||
Defined in Cryptol.TypeCheck.Type Associated Types
Methods from :: NominalTypeDef -> Rep NominalTypeDef x # to :: Rep NominalTypeDef x -> NominalTypeDef # | |||||
| Show NominalTypeDef Source # | |||||
Defined in Cryptol.TypeCheck.Type Methods showsPrec :: Int -> NominalTypeDef -> ShowS # show :: NominalTypeDef -> String # showList :: [NominalTypeDef] -> ShowS # | |||||
| FreeVars NominalTypeDef Source # | |||||
Defined in Cryptol.IR.FreeVars Methods freeVars :: NominalTypeDef -> Deps Source # | |||||
| TraverseNames NominalTypeDef Source # | |||||
Defined in Cryptol.IR.TraverseNames Methods traverseNamesIP :: (Applicative f, ?name :: Name -> f Name) => NominalTypeDef -> f NominalTypeDef Source # | |||||
| ModuleInstance NominalTypeDef Source # | |||||
Defined in Cryptol.TypeCheck.ModuleInstance Methods | |||||
| NFData NominalTypeDef Source # | |||||
Defined in Cryptol.TypeCheck.Type Methods rnf :: NominalTypeDef -> () # | |||||
| type Rep NominalTypeDef Source # | |||||
Defined in Cryptol.TypeCheck.Type type Rep NominalTypeDef = D1 ('MetaData "NominalTypeDef" "Cryptol.TypeCheck.Type" "cryptol-3.5.0-HoSGjqdyafy4TMoEJgOBMg" 'False) (C1 ('MetaCons "Struct" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 StructCon)) :+: (C1 ('MetaCons "Enum" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [EnumCon])) :+: C1 ('MetaCons "Abstract" 'PrefixI 'False) (U1 :: Type -> Type))) | |||||
Type variables.
Constructors
| TVFree !Int Kind (Set TParam) TVarInfo | Unique, kind, ids of bound type variables that are in scope. The last field gives us some info for nicer warnings/errors. |
| TVBound !TParam |
Instances
| Generic TVar Source # | |||||
Defined in Cryptol.TypeCheck.Type Associated Types
| |||||
| Show TVar Source # | |||||
| FreeVars TVar Source # | |||||
| TraverseNames TVar Source # | |||||
Defined in Cryptol.IR.TraverseNames Methods traverseNamesIP :: (Applicative f, ?name :: Name -> f Name) => TVar -> f TVar Source # | |||||
| HasKind TVar Source # | |||||
| PP TVar Source # | |||||
| NFData TVar Source # | |||||
Defined in Cryptol.TypeCheck.Type | |||||
| Eq TVar Source # | |||||
| Ord TVar Source # | |||||
| PP (WithNames TVar) Source # | |||||
| type Rep TVar Source # | |||||
Defined in Cryptol.TypeCheck.Type type Rep TVar = D1 ('MetaData "TVar" "Cryptol.TypeCheck.Type" "cryptol-3.5.0-HoSGjqdyafy4TMoEJgOBMg" 'False) (C1 ('MetaCons "TVFree" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Kind)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Set TParam)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TVarInfo))) :+: C1 ('MetaCons "TVBound" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'SourceUnpack 'SourceStrict 'DecidedStrict) (Rec0 TParam))) | |||||
Constructors
| ArgDescr | |
Fields
| |
Instances
| Generic ArgDescr Source # | |||||
Defined in Cryptol.TypeCheck.Type Associated Types
| |||||
| Show ArgDescr Source # | |||||
| TraverseNames ArgDescr Source # | |||||
Defined in Cryptol.IR.TraverseNames Methods traverseNamesIP :: (Applicative f, ?name :: Name -> f Name) => ArgDescr -> f ArgDescr Source # | |||||
| PP ArgDescr Source # | |||||
| NFData ArgDescr Source # | |||||
Defined in Cryptol.TypeCheck.Type | |||||
| type Rep ArgDescr Source # | |||||
Defined in Cryptol.TypeCheck.Type type Rep ArgDescr = D1 ('MetaData "ArgDescr" "Cryptol.TypeCheck.Type" "cryptol-3.5.0-HoSGjqdyafy4TMoEJgOBMg" 'False) (C1 ('MetaCons "ArgDescr" 'PrefixI 'True) (S1 ('MetaSel ('Just "argDescrFun") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Name)) :*: S1 ('MetaSel ('Just "argDescrNumber") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Int)))) | |||||
The types of polymorphic values.
Instances
| Generic Schema Source # | |||||
Defined in Cryptol.TypeCheck.Type Associated Types
| |||||
| Show Schema Source # | |||||
| FreeVars Schema Source # | |||||
| TraverseNames Schema Source # | |||||
Defined in Cryptol.IR.TraverseNames Methods traverseNamesIP :: (Applicative f, ?name :: Name -> f Name) => Schema -> f Schema Source # | |||||
| ModuleInstance Schema Source # | |||||
Defined in Cryptol.TypeCheck.ModuleInstance Methods moduleInstance :: Schema -> Schema Source # | |||||
| TVars Schema Source # | This instance does not need to worry about bound variable
capture, because we rely on the | ||||
| FVS Schema Source # | |||||
| PP Schema Source # | |||||
| NFData Schema Source # | |||||
Defined in Cryptol.TypeCheck.Type | |||||
| Eq Schema Source # | |||||
| PP (WithNames Schema) Source # | |||||
| type Rep Schema Source # | |||||
Defined in Cryptol.TypeCheck.Type type Rep Schema = D1 ('MetaData "Schema" "Cryptol.TypeCheck.Type" "cryptol-3.5.0-HoSGjqdyafy4TMoEJgOBMg" 'False) (C1 ('MetaCons "Forall" 'PrefixI 'True) (S1 ('MetaSel ('Just "sVars") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TParam]) :*: (S1 ('MetaSel ('Just "sProps") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Prop]) :*: S1 ('MetaSel ('Just "sType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)))) | |||||
Type parameters.
Constructors
| TParam | |
Instances
| Generic TParam Source # | |||||
Defined in Cryptol.TypeCheck.Type Associated Types
| |||||
| Show TParam Source # | |||||
| TraverseNames TParam Source # | |||||
Defined in Cryptol.IR.TraverseNames Methods traverseNamesIP :: (Applicative f, ?name :: Name -> f Name) => TParam -> f TParam Source # | |||||
| ShowParseable TParam Source # | |||||
Defined in Cryptol.TypeCheck.Parseable | |||||
| HasKind TParam Source # | |||||
| PP TParam Source # | |||||
| NFData TParam Source # | |||||
Defined in Cryptol.TypeCheck.Type | |||||
| Eq TParam Source # | |||||
| Ord TParam Source # | |||||
| PP (WithNames TParam) Source # | |||||
| type Rep TParam Source # | |||||
Defined in Cryptol.TypeCheck.Type type Rep TParam = D1 ('MetaData "TParam" "Cryptol.TypeCheck.Type" "cryptol-3.5.0-HoSGjqdyafy4TMoEJgOBMg" 'False) (C1 ('MetaCons "TParam" 'PrefixI 'True) ((S1 ('MetaSel ('Just "tpUnique") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int) :*: S1 ('MetaSel ('Just "tpKind") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Kind)) :*: (S1 ('MetaSel ('Just "tpFlav") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TPFlavor) :*: S1 ('MetaSel ('Just "tpInfo") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TVarInfo)))) | |||||
Type synonym.
Constructors
| TySyn | |
Instances
| Generic TySyn Source # | |||||
Defined in Cryptol.TypeCheck.Type Associated Types
| |||||
| Show TySyn Source # | |||||
| TraverseNames TySyn Source # | |||||
Defined in Cryptol.IR.TraverseNames Methods traverseNamesIP :: (Applicative f, ?name :: Name -> f Name) => TySyn -> f TySyn Source # | |||||
| ModuleInstance TySyn Source # | |||||
Defined in Cryptol.TypeCheck.ModuleInstance Methods moduleInstance :: TySyn -> TySyn Source # | |||||
| TVars TySyn Source # | |||||
| HasKind TySyn Source # | |||||
| PP TySyn Source # | |||||
| NFData TySyn Source # | |||||
Defined in Cryptol.TypeCheck.Type | |||||
| PP (WithNames TySyn) Source # | |||||
| type Rep TySyn Source # | |||||
Defined in Cryptol.TypeCheck.Type type Rep TySyn = D1 ('MetaData "TySyn" "Cryptol.TypeCheck.Type" "cryptol-3.5.0-HoSGjqdyafy4TMoEJgOBMg" 'False) (C1 ('MetaCons "TySyn" 'PrefixI 'True) ((S1 ('MetaSel ('Just "tsName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Just "tsParams") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TParam])) :*: (S1 ('MetaSel ('Just "tsConstraints") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Prop]) :*: (S1 ('MetaSel ('Just "tsDef") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel ('Just "tsDoc") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe Text)))))) | |||||
Constructor for an enumeration
Constructors
| EnumCon | |
Instances
| Generic EnumCon Source # | |||||
Defined in Cryptol.TypeCheck.Type Associated Types
| |||||
| Show EnumCon Source # | |||||
| FreeVars EnumCon Source # | |||||
| TraverseNames EnumCon Source # | |||||
Defined in Cryptol.IR.TraverseNames Methods traverseNamesIP :: (Applicative f, ?name :: Name -> f Name) => EnumCon -> f EnumCon Source # | |||||
| ModuleInstance EnumCon Source # | |||||
Defined in Cryptol.TypeCheck.ModuleInstance Methods moduleInstance :: EnumCon -> EnumCon Source # | |||||
| NFData EnumCon Source # | |||||
Defined in Cryptol.TypeCheck.Type | |||||
| type Rep EnumCon Source # | |||||
Defined in Cryptol.TypeCheck.Type type Rep EnumCon = D1 ('MetaData "EnumCon" "Cryptol.TypeCheck.Type" "cryptol-3.5.0-HoSGjqdyafy4TMoEJgOBMg" 'False) (C1 ('MetaCons "EnumCon" 'PrefixI 'True) ((S1 ('MetaSel ('Just "ecName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Just "ecNumber") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int)) :*: (S1 ('MetaSel ('Just "ecFields") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Type]) :*: (S1 ('MetaSel ('Just "ecPublic") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "ecDoc") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)))))) | |||||
A module parameter. Corresponds to a "signature import". A single module parameter can bring multiple things in scope.
Constructors
| ModParam | |
Fields
| |
Instances
| Generic ModParam Source # | |||||
Defined in Cryptol.TypeCheck.Type Associated Types
| |||||
| Show ModParam Source # | |||||
| ModuleInstance ModParam Source # | |||||
Defined in Cryptol.TypeCheck.ModuleInstance Methods moduleInstance :: ModParam -> ModParam Source # | |||||
| NFData ModParam Source # | |||||
Defined in Cryptol.TypeCheck.Type | |||||
| type Rep ModParam Source # | |||||
Defined in Cryptol.TypeCheck.Type type Rep ModParam = D1 ('MetaData "ModParam" "Cryptol.TypeCheck.Type" "cryptol-3.5.0-HoSGjqdyafy4TMoEJgOBMg" 'False) (C1 ('MetaCons "ModParam" 'PrefixI 'True) ((S1 ('MetaSel ('Just "mpName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Ident) :*: S1 ('MetaSel ('Just "mpQual") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe ModName))) :*: (S1 ('MetaSel ('Just "mpIface") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ImpName Name)) :*: S1 ('MetaSel ('Just "mpParameters") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ModParamNames)))) | |||||
data ModParamNames Source #
Information about the names brought in through an "interface import". This is also used to keep information about.
Constructors
| ModParamNames | |
Instances
| Generic ModParamNames Source # | |||||
Defined in Cryptol.TypeCheck.Type Associated Types
| |||||
| Show ModParamNames Source # | |||||
Defined in Cryptol.TypeCheck.Type Methods showsPrec :: Int -> ModParamNames -> ShowS # show :: ModParamNames -> String # showList :: [ModParamNames] -> ShowS # | |||||
| ModuleInstance ModParamNames Source # | |||||
Defined in Cryptol.TypeCheck.ModuleInstance Methods | |||||
| PP ModParamNames Source # | |||||
Defined in Cryptol.TypeCheck.Type Methods ppPrec :: Int -> ModParamNames -> Doc Source # ppPrecWithAnnot :: [([Int], PPAnnot)] -> Int -> ModParamNames -> Doc Source # | |||||
| NFData ModParamNames Source # | |||||
Defined in Cryptol.TypeCheck.Type Methods rnf :: ModParamNames -> () # | |||||
| type Rep ModParamNames Source # | |||||
Defined in Cryptol.TypeCheck.Type type Rep ModParamNames = D1 ('MetaData "ModParamNames" "Cryptol.TypeCheck.Type" "cryptol-3.5.0-HoSGjqdyafy4TMoEJgOBMg" 'False) (C1 ('MetaCons "ModParamNames" 'PrefixI 'True) ((S1 ('MetaSel ('Just "mpnTypes") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map Name ModTParam)) :*: S1 ('MetaSel ('Just "mpnTySyn") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Map Name TySyn))) :*: (S1 ('MetaSel ('Just "mpnConstraints") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Located Prop]) :*: (S1 ('MetaSel ('Just "mpnFuns") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map Name ModVParam)) :*: S1 ('MetaSel ('Just "mpnDoc") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe Text)))))) | |||||
Instances
| FVS Error Source # | |
| FVS Warning Source # | |
| FVS FFITypeError Source # | |
Defined in Cryptol.TypeCheck.FFI.Error | |
| FVS FFITypeErrorReason Source # | |
Defined in Cryptol.TypeCheck.FFI.Error | |
| FVS DelayedCt Source # | |
| FVS Goal Source # | |
| FVS Schema Source # | |
| FVS Type Source # | |
| FVS a => FVS (Maybe a) Source # | |
| FVS a => FVS [a] Source # | |
| (FVS a, FVS b) => FVS (a, b) Source # | |
data TypeSource Source #
Explains how this type came to be, for better error messages.
Constructors
| TVFromModParam Name | Name of module parameter |
| TVFromSignature Name | A variable in a signature |
| TypeWildCard | |
| TypeOfRecordField Ident | |
| TypeOfTupleField Int | |
| TypeOfSeqElement | |
| LenOfSeq | |
| TypeParamInstNamed Name Ident | |
| TypeParamInstPos Name Int | |
| DefinitionOf Name | |
| LenOfCompGen | |
| TypeOfArg ArgDescr | |
| TypeOfRes | |
| FunApp | |
| TypeOfIfCondExpr | |
| TypeFromUserAnnotation | |
| GeneratorOfListComp | |
| CasedExpression | |
| ConPat | |
| TypeErrorPlaceHolder |
Instances
| Generic TypeSource Source # | |||||
Defined in Cryptol.TypeCheck.Type Associated Types
| |||||
| Show TypeSource Source # | |||||
Defined in Cryptol.TypeCheck.Type Methods showsPrec :: Int -> TypeSource -> ShowS # show :: TypeSource -> String # showList :: [TypeSource] -> ShowS # | |||||
| TraverseNames TypeSource Source # | |||||
Defined in Cryptol.IR.TraverseNames Methods traverseNamesIP :: (Applicative f, ?name :: Name -> f Name) => TypeSource -> f TypeSource Source # | |||||
| PP TypeSource Source # | |||||
Defined in Cryptol.TypeCheck.Type Methods ppPrec :: Int -> TypeSource -> Doc Source # ppPrecWithAnnot :: [([Int], PPAnnot)] -> Int -> TypeSource -> Doc Source # | |||||
| NFData TypeSource Source # | |||||
Defined in Cryptol.TypeCheck.Type Methods rnf :: TypeSource -> () # | |||||
| type Rep TypeSource Source # | |||||
Defined in Cryptol.TypeCheck.Type type Rep TypeSource = D1 ('MetaData "TypeSource" "Cryptol.TypeCheck.Type" "cryptol-3.5.0-HoSGjqdyafy4TMoEJgOBMg" 'False) ((((C1 ('MetaCons "TVFromModParam" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :+: C1 ('MetaCons "TVFromSignature" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name))) :+: (C1 ('MetaCons "TypeWildCard" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "TypeOfRecordField" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Ident)) :+: C1 ('MetaCons "TypeOfTupleField" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int))))) :+: ((C1 ('MetaCons "TypeOfSeqElement" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LenOfSeq" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "TypeParamInstNamed" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Ident)) :+: (C1 ('MetaCons "TypeParamInstPos" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)) :+: C1 ('MetaCons "DefinitionOf" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)))))) :+: (((C1 ('MetaCons "LenOfCompGen" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TypeOfArg" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ArgDescr))) :+: (C1 ('MetaCons "TypeOfRes" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "FunApp" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TypeOfIfCondExpr" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "TypeFromUserAnnotation" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "GeneratorOfListComp" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "CasedExpression" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ConPat" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TypeErrorPlaceHolder" 'PrefixI 'False) (U1 :: Type -> Type)))))) | |||||
allParamNames :: FunctorParams -> ModParamNames Source #
Compute the names from all functor parameters
A type parameter of a module.
Instances
| Generic ModTParam Source # | |||||
Defined in Cryptol.TypeCheck.Type Associated Types
| |||||
| Show ModTParam Source # | |||||
| TraverseNames ModTParam Source # | |||||
Defined in Cryptol.IR.TraverseNames Methods traverseNamesIP :: (Applicative f, ?name :: Name -> f Name) => ModTParam -> f ModTParam Source # | |||||
| ModuleInstance ModTParam Source # | |||||
Defined in Cryptol.TypeCheck.ModuleInstance Methods moduleInstance :: ModTParam -> ModTParam Source # | |||||
| PP ModTParam Source # | |||||
| NFData ModTParam Source # | |||||
Defined in Cryptol.TypeCheck.Type | |||||
| type Rep ModTParam Source # | |||||
Defined in Cryptol.TypeCheck.Type type Rep ModTParam = D1 ('MetaData "ModTParam" "Cryptol.TypeCheck.Type" "cryptol-3.5.0-HoSGjqdyafy4TMoEJgOBMg" 'False) (C1 ('MetaCons "ModTParam" 'PrefixI 'True) (S1 ('MetaSel ('Just "mtpName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: (S1 ('MetaSel ('Just "mtpKind") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Kind) :*: S1 ('MetaSel ('Just "mtpDoc") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text))))) | |||||
A value parameter of a module.
Constructors
| ModVParam | |
Instances
| Generic ModVParam Source # | |||||
Defined in Cryptol.TypeCheck.Type Associated Types
| |||||
| Show ModVParam Source # | |||||
| TraverseNames ModVParam Source # | |||||
Defined in Cryptol.IR.TraverseNames Methods traverseNamesIP :: (Applicative f, ?name :: Name -> f Name) => ModVParam -> f ModVParam Source # | |||||
| ModuleInstance ModVParam Source # | |||||
Defined in Cryptol.TypeCheck.ModuleInstance Methods moduleInstance :: ModVParam -> ModVParam Source # | |||||
| PP ModVParam Source # | |||||
| NFData ModVParam Source # | |||||
Defined in Cryptol.TypeCheck.Type | |||||
| type Rep ModVParam Source # | |||||
Defined in Cryptol.TypeCheck.Type type Rep ModVParam = D1 ('MetaData "ModVParam" "Cryptol.TypeCheck.Type" "cryptol-3.5.0-HoSGjqdyafy4TMoEJgOBMg" 'False) (C1 ('MetaCons "ModVParam" 'PrefixI 'True) ((S1 ('MetaSel ('Just "mvpName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Just "mvpType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Schema)) :*: (S1 ('MetaSel ('Just "mvpDoc") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: S1 ('MetaSel ('Just "mvpFixity") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Fixity))))) | |||||
Constructors
| TPModParam Name | |
| TPUnifyVar | |
| TPSchemaParam Name | |
| TPTySynParam Name | |
| TPPropSynParam Name | |
| TPNominalParam Name | |
| TPPrimParam Name |
Instances
| Generic TPFlavor Source # | |||||
Defined in Cryptol.TypeCheck.Type Associated Types
| |||||
| Show TPFlavor Source # | |||||
| TraverseNames TPFlavor Source # | |||||
Defined in Cryptol.IR.TraverseNames Methods traverseNamesIP :: (Applicative f, ?name :: Name -> f Name) => TPFlavor -> f TPFlavor Source # | |||||
| NFData TPFlavor Source # | |||||
Defined in Cryptol.TypeCheck.Type | |||||
| type Rep TPFlavor Source # | |||||
Defined in Cryptol.TypeCheck.Type type Rep TPFlavor = D1 ('MetaData "TPFlavor" "Cryptol.TypeCheck.Type" "cryptol-3.5.0-HoSGjqdyafy4TMoEJgOBMg" 'False) ((C1 ('MetaCons "TPModParam" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :+: (C1 ('MetaCons "TPUnifyVar" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TPSchemaParam" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)))) :+: ((C1 ('MetaCons "TPTySynParam" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :+: C1 ('MetaCons "TPPropSynParam" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name))) :+: (C1 ('MetaCons "TPNominalParam" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)) :+: C1 ('MetaCons "TPPrimParam" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name))))) | |||||
Constructors
| TVarInfo | |
Fields
| |
Instances
| Generic TVarInfo Source # | |||||
Defined in Cryptol.TypeCheck.Type Associated Types
| |||||
| Show TVarInfo Source # | |||||
| TraverseNames TVarInfo Source # | |||||
Defined in Cryptol.IR.TraverseNames Methods traverseNamesIP :: (Applicative f, ?name :: Name -> f Name) => TVarInfo -> f TVarInfo Source # | |||||
| PP TVarInfo Source # | |||||
| NFData TVarInfo Source # | |||||
Defined in Cryptol.TypeCheck.Type | |||||
| type Rep TVarInfo Source # | |||||
Defined in Cryptol.TypeCheck.Type type Rep TVarInfo = D1 ('MetaData "TVarInfo" "Cryptol.TypeCheck.Type" "cryptol-3.5.0-HoSGjqdyafy4TMoEJgOBMg" 'False) (C1 ('MetaCons "TVarInfo" 'PrefixI 'True) (S1 ('MetaSel ('Just "tvarSource") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Range) :*: S1 ('MetaSel ('Just "tvarDesc") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 TypeSource))) | |||||
schemaParam :: Name -> TPFlavor Source #
tySynParam :: Name -> TPFlavor Source #
propSynParam :: Name -> TPFlavor Source #
nominalParam :: Name -> TPFlavor Source #
modTyParam :: Name -> TPFlavor Source #
data NominalType Source #
Nominal types
Constructors
| NominalType | |
Fields
| |
Instances
| Generic NominalType Source # | |||||
Defined in Cryptol.TypeCheck.Type Associated Types
| |||||
| Show NominalType Source # | |||||
Defined in Cryptol.TypeCheck.Type Methods showsPrec :: Int -> NominalType -> ShowS # show :: NominalType -> String # showList :: [NominalType] -> ShowS # | |||||
| FreeVars NominalType Source # | |||||
Defined in Cryptol.IR.FreeVars Methods freeVars :: NominalType -> Deps Source # | |||||
| TraverseNames NominalType Source # | |||||
Defined in Cryptol.IR.TraverseNames Methods traverseNamesIP :: (Applicative f, ?name :: Name -> f Name) => NominalType -> f NominalType Source # | |||||
| ModuleInstance NominalType Source # | |||||
Defined in Cryptol.TypeCheck.ModuleInstance Methods | |||||
| HasKind NominalType Source # | |||||
Defined in Cryptol.TypeCheck.Type Methods kindOf :: NominalType -> Kind Source # | |||||
| PP NominalType Source # | |||||
Defined in Cryptol.TypeCheck.Type Methods ppPrec :: Int -> NominalType -> Doc Source # ppPrecWithAnnot :: [([Int], PPAnnot)] -> Int -> NominalType -> Doc Source # | |||||
| NFData NominalType Source # | |||||
Defined in Cryptol.TypeCheck.Type Methods rnf :: NominalType -> () # | |||||
| Eq NominalType Source # | |||||
Defined in Cryptol.TypeCheck.Type | |||||
| Ord NominalType Source # | |||||
Defined in Cryptol.TypeCheck.Type Methods compare :: NominalType -> NominalType -> Ordering # (<) :: NominalType -> NominalType -> Bool # (<=) :: NominalType -> NominalType -> Bool # (>) :: NominalType -> NominalType -> Bool # (>=) :: NominalType -> NominalType -> Bool # max :: NominalType -> NominalType -> NominalType # min :: NominalType -> NominalType -> NominalType # | |||||
| PP (WithNames NominalType) Source # | |||||
Defined in Cryptol.TypeCheck.Type | |||||
| type Rep NominalType Source # | |||||
Defined in Cryptol.TypeCheck.Type type Rep NominalType = D1 ('MetaData "NominalType" "Cryptol.TypeCheck.Type" "cryptol-3.5.0-HoSGjqdyafy4TMoEJgOBMg" 'False) (C1 ('MetaCons "NominalType" 'PrefixI 'True) (((S1 ('MetaSel ('Just "ntName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name) :*: S1 ('MetaSel ('Just "ntParams") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TParam])) :*: (S1 ('MetaSel ('Just "ntKind") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Kind) :*: S1 ('MetaSel ('Just "ntConstraints") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Prop]))) :*: ((S1 ('MetaSel ('Just "ntDef") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 NominalTypeDef) :*: S1 ('MetaSel ('Just "ntDeriving") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map PC [Prop]))) :*: (S1 ('MetaSel ('Just "ntFixity") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe Fixity)) :*: S1 ('MetaSel ('Just "ntDoc") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)))))) | |||||
tvSourceName :: TypeSource -> Maybe Name Source #
Get the names of something that is related to the tvar.
data TypeWithSource Source #
A type annotated with information on how it came about.
Constructors
| WithSource | |
Constructor for a struct (aka newtype)
Instances
| Generic StructCon Source # | |||||
Defined in Cryptol.TypeCheck.Type Associated Types
| |||||
| Show StructCon Source # | |||||
| FreeVars StructCon Source # | |||||
| TraverseNames StructCon Source # | |||||
Defined in Cryptol.IR.TraverseNames Methods traverseNamesIP :: (Applicative f, ?name :: Name -> f Name) => StructCon -> f StructCon Source # | |||||
| ModuleInstance StructCon Source # | |||||
Defined in Cryptol.TypeCheck.ModuleInstance Methods moduleInstance :: StructCon -> StructCon Source # | |||||
| NFData StructCon Source # | |||||
Defined in Cryptol.TypeCheck.Type | |||||
| type Rep StructCon Source # | |||||
Defined in Cryptol.TypeCheck.Type type Rep StructCon = D1 ('MetaData "StructCon" "Cryptol.TypeCheck.Type" "cryptol-3.5.0-HoSGjqdyafy4TMoEJgOBMg" 'False) (C1 ('MetaCons "StructCon" 'PrefixI 'True) (S1 ('MetaSel ('Just "ntConName") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Name) :*: S1 ('MetaSel ('Just "ntFields") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (RecordMap Ident Type)))) | |||||
quickApply :: Kind -> [a] -> Kind Source #
kindResult :: Kind -> Kind Source #
superclassSet :: Prop -> Set Prop Source #
Compute the set of all Props that are implied by the
given prop via superclass constraints.
typeSuperclassSet :: PC -> Set PC Source #
Given a typeclass of kind * -> Prop, compute the set of all transitive
superclasses of kind * -> Prop.
nominalTypeConTypes :: NominalType -> [(Name, Schema)] Source #
tHasErrors :: Type -> Bool Source #
tIsInteger :: Type -> Bool Source #
tIsRational :: Type -> Bool Source #
tIsNominal :: Type -> Maybe (NominalType, [Type]) Source #
tSplitFun :: TFun -> Type -> [Type] Source #
Split up repeated occurances of the given binary type-level function.
tError :: Type -> Type Source #
Make an error value of the given type to replace the given malformed type (the argument to the error function)
pSignedCmp :: Type -> Prop Source #
pHas :: Selector -> Type -> Type -> Prop Source #
A Has constraint, used for tuple and record selection.
pNegNumeric :: Prop -> [Prop] Source #
pNegNumeric negates a simple (i.e., not And, not prime, etc) prop
over numeric type vars. The result is a conjunction of properties.
noFreeVariables :: FVS t => t -> Bool Source #
ppNominalShort :: NominalType -> Doc Source #
ppNominalFull :: NominalType -> Doc Source #
pickTVarName :: Kind -> TypeSource -> Int -> Doc Source #
module Cryptol.TypeCheck.TCon