Copyright | (c) 2013-2016 Galois Inc. |
---|---|
License | BSD3 |
Maintainer | cryptol@galois.com |
Stability | provisional |
Portability | portable |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
Cryptol.Eval.Type
Description
Synopsis
- data TValue
- data TNominalTypeValue
- data ConInfo a = ConInfo {}
- isNullaryCon :: ConInfo a -> Bool
- zipConInfo :: (a -> b -> c) -> ConInfo a -> ConInfo b -> ConInfo c
- tValTy :: TValue -> Type
- tNumTy :: Nat' -> Type
- tNumValTy :: Either Nat' TValue -> Type
- isTBit :: TValue -> Bool
- tvSeq :: Nat' -> TValue -> TValue
- tvFloat64 :: TValue
- finNat' :: Nat' -> Integer
- newtype TypeEnv = TypeEnv {
- envTypeMap :: IntMap (Either Nat' TValue)
- lookupTypeVar :: TVar -> TypeEnv -> Maybe (Either Nat' TValue)
- bindTypeVar :: TVar -> Either Nat' TValue -> TypeEnv -> TypeEnv
- evalType :: TypeEnv -> Type -> Either Nat' TValue
- evalNominalTypeBody :: TypeEnv -> NominalType -> [Either Nat' TValue] -> TNominalTypeValue
- evalValType :: TypeEnv -> Type -> TValue
- evalNumType :: TypeEnv -> Type -> Nat'
- evalTF :: TFun -> [Nat'] -> Nat'
Documentation
An evaluated type of kind *. These types do not contain type variables, type synonyms, or type functions.
Constructors
TVBit | Bit |
TVInteger | Integer |
TVFloat Integer Integer | Float e p |
TVIntMod Integer | Z n |
TVRational | Rational |
TVArray TValue TValue | Array a b |
TVSeq Integer TValue | [n]a |
TVStream TValue | [inf]t |
TVTuple [TValue] | (a, b, c ) |
TVRec (RecordMap Ident TValue) | { x : a, y : b, z : c } |
TVFun TValue TValue | a -> b |
TVNominal NominalType [Either Nat' TValue] TNominalTypeValue | a named newtype |
Instances
data TNominalTypeValue Source #
Constructors
TVStruct (RecordMap Ident TValue) | |
TVEnum (Vector (ConInfo TValue)) | Indexed by constructor number |
TVAbstract |
Instances
Instances
Foldable ConInfo Source # | |
Defined in Cryptol.Eval.Type Methods fold :: Monoid m => ConInfo m -> m # foldMap :: Monoid m => (a -> m) -> ConInfo a -> m # foldMap' :: Monoid m => (a -> m) -> ConInfo a -> m # foldr :: (a -> b -> b) -> b -> ConInfo a -> b # foldr' :: (a -> b -> b) -> b -> ConInfo a -> b # foldl :: (b -> a -> b) -> b -> ConInfo a -> b # foldl' :: (b -> a -> b) -> b -> ConInfo a -> b # foldr1 :: (a -> a -> a) -> ConInfo a -> a # foldl1 :: (a -> a -> a) -> ConInfo a -> a # elem :: Eq a => a -> ConInfo a -> Bool # maximum :: Ord a => ConInfo a -> a # minimum :: Ord a => ConInfo a -> a # | |
Traversable ConInfo Source # | |
Functor ConInfo Source # | |
Generic (ConInfo a) Source # | |
NFData a => NFData (ConInfo a) Source # | |
Defined in Cryptol.Eval.Type | |
Eq a => Eq (ConInfo a) Source # | |
type Rep (ConInfo a) Source # | |
Defined in Cryptol.Eval.Type type Rep (ConInfo a) = D1 ('MetaData "ConInfo" "Cryptol.Eval.Type" "cryptol-3.3.0-7OIQa8lMv7L2xoAlM9JEI6" 'False) (C1 ('MetaCons "ConInfo" 'PrefixI 'True) (S1 ('MetaSel ('Just "conIdent") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Ident) :*: S1 ('MetaSel ('Just "conFields") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Vector a)))) |
isNullaryCon :: ConInfo a -> Bool Source #
finNat' :: Nat' -> Integer Source #
Coerce an extended natural into an integer, for values known to be finite
evalNominalTypeBody :: TypeEnv -> NominalType -> [Either Nat' TValue] -> TNominalTypeValue Source #
Evaluate the body of a newtype, given evaluated arguments