| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
PlutusCore.Evaluation.Machine.MachineParameters
Synopsis
- data CostModel machinecosts builtincosts = CostModel {
- _machineCostModel :: machinecosts
- _builtinCostModel :: builtincosts
- builtinCostModel :: forall machinecosts builtincosts1 builtincosts2 f. Functor f => (builtincosts1 -> f builtincosts2) -> CostModel machinecosts builtincosts1 -> f (CostModel machinecosts builtincosts2)
- machineCostModel :: forall machinecosts1 builtincosts machinecosts2 f. Functor f => (machinecosts1 -> f machinecosts2) -> CostModel machinecosts1 builtincosts -> f (CostModel machinecosts2 builtincosts)
- data MachineVariantParameters machineCosts fun val = MachineVariantParameters {
- machineCosts :: machineCosts
- builtinsRuntime :: BuiltinsRuntime fun val
- data MachineParameters machineCosts fun val = MachineParameters {
- machineCaserBuiltin :: CaserBuiltin (UniOf val)
- machineVariantParameters :: MachineVariantParameters machineCosts fun val
- mkMachineVariantParameters :: forall (uni :: Type -> Type) fun builtincosts val machineCosts. (CostingPart uni fun ~ builtincosts, HasMeaningIn uni val, ToBuiltinMeaning uni fun) => BuiltinSemanticsVariant fun -> CostModel machineCosts builtincosts -> MachineVariantParameters machineCosts fun val
Documentation
data CostModel machinecosts builtincosts Source #
We need to account for the costs of evaluator steps and also built-in function evaluation. The models for these have different structures and are used in different parts of the code, so inside the valuator we pass separate objects about most of the time . It's convenient for clients of the evaluator to only have to worry about a single object, so the CostModel type bundles the two together. We could conceivably have different evaluators with different internal costs, so we keep the machine costs abstract. The model for Cek machine steps is in UntypedPlutusCore.Evaluation.Machine.Cek.CekMachineCosts.
Constructors
| CostModel | |
Fields
| |
builtinCostModel :: forall machinecosts builtincosts1 builtincosts2 f. Functor f => (builtincosts1 -> f builtincosts2) -> CostModel machinecosts builtincosts1 -> f (CostModel machinecosts builtincosts2) Source #
machineCostModel :: forall machinecosts1 builtincosts machinecosts2 f. Functor f => (machinecosts1 -> f machinecosts2) -> CostModel machinecosts1 builtincosts -> f (CostModel machinecosts2 builtincosts) Source #
data MachineVariantParameters machineCosts fun val Source #
The part of MachineParameters that is individual for each semantics variant of DefaultFun.
CaserBuiltin isn't included, because it only explicitly depends on the protocol version and not
the language version (even though there's an implicit dependency on the language version: older
languages don't support Case in general, but it's safe to ignore that, because support for
Case is controlled by the AST version, which is a separate check during deserialisation).
Constructors
| MachineVariantParameters | |
Fields
| |
Instances
| Generic (MachineVariantParameters machineCosts fun val) Source # | |||||
Defined in PlutusCore.Evaluation.Machine.MachineParameters Associated Types
Methods from :: MachineVariantParameters machineCosts fun val -> Rep (MachineVariantParameters machineCosts fun val) x Source # to :: Rep (MachineVariantParameters machineCosts fun val) x -> MachineVariantParameters machineCosts fun val Source # | |||||
| (NFData machineCosts, Bounded fun, Enum fun) => NFData (MachineVariantParameters machineCosts fun val) Source # | |||||
Defined in PlutusCore.Evaluation.Machine.MachineParameters Methods rnf :: MachineVariantParameters machineCosts fun val -> () Source # | |||||
| (NoThunks machinecosts, Bounded fun, Enum fun) => NoThunks (MachineVariantParameters machinecosts fun val) Source # | |||||
Defined in PlutusCore.Evaluation.Machine.MachineParameters Methods noThunks :: Context -> MachineVariantParameters machinecosts fun val -> IO (Maybe ThunkInfo) wNoThunks :: Context -> MachineVariantParameters machinecosts fun val -> IO (Maybe ThunkInfo) showTypeOf :: Proxy (MachineVariantParameters machinecosts fun val) -> String | |||||
| type Rep (MachineVariantParameters machineCosts fun val) Source # | |||||
Defined in PlutusCore.Evaluation.Machine.MachineParameters type Rep (MachineVariantParameters machineCosts fun val) = D1 ('MetaData "MachineVariantParameters" "PlutusCore.Evaluation.Machine.MachineParameters" "plutus-core-1.60.0.0-LXFqBsoUlXsJIEqLytHte7" 'False) (C1 ('MetaCons "MachineVariantParameters" 'PrefixI 'True) (S1 ('MetaSel ('Just "machineCosts") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 machineCosts) :*: S1 ('MetaSel ('Just "builtinsRuntime") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (BuiltinsRuntime fun val)))) | |||||
data MachineParameters machineCosts fun val Source #
At execution time we need a BuiltinsRuntime object which includes both the cost model for
builtins and their denotations. This bundles one of those together with the cost model for evaluator
steps and a CaserBuiltin specifying how casing on values of built-in types works.
The val type will be CekValue when we're using this with the CEK machine.
Constructors
| MachineParameters | |
Fields
| |
Instances
| Generic (MachineParameters machineCosts fun val) Source # | |||||
Defined in PlutusCore.Evaluation.Machine.MachineParameters Associated Types
Methods from :: MachineParameters machineCosts fun val -> Rep (MachineParameters machineCosts fun val) x Source # to :: Rep (MachineParameters machineCosts fun val) x -> MachineParameters machineCosts fun val Source # | |||||
| (NFData machineCosts, Bounded fun, Enum fun) => NFData (MachineParameters machineCosts fun val) Source # | |||||
Defined in PlutusCore.Evaluation.Machine.MachineParameters Methods rnf :: MachineParameters machineCosts fun val -> () Source # | |||||
| (NoThunks machinecosts, Bounded fun, Enum fun) => NoThunks (MachineParameters machinecosts fun val) Source # | |||||
Defined in PlutusCore.Evaluation.Machine.MachineParameters Methods noThunks :: Context -> MachineParameters machinecosts fun val -> IO (Maybe ThunkInfo) wNoThunks :: Context -> MachineParameters machinecosts fun val -> IO (Maybe ThunkInfo) showTypeOf :: Proxy (MachineParameters machinecosts fun val) -> String | |||||
| type Rep (MachineParameters machineCosts fun val) Source # | |||||
Defined in PlutusCore.Evaluation.Machine.MachineParameters type Rep (MachineParameters machineCosts fun val) = D1 ('MetaData "MachineParameters" "PlutusCore.Evaluation.Machine.MachineParameters" "plutus-core-1.60.0.0-LXFqBsoUlXsJIEqLytHte7" 'False) (C1 ('MetaCons "MachineParameters" 'PrefixI 'True) (S1 ('MetaSel ('Just "machineCaserBuiltin") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (CaserBuiltin (UniOf val))) :*: S1 ('MetaSel ('Just "machineVariantParameters") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (MachineVariantParameters machineCosts fun val)))) | |||||
mkMachineVariantParameters :: forall (uni :: Type -> Type) fun builtincosts val machineCosts. (CostingPart uni fun ~ builtincosts, HasMeaningIn uni val, ToBuiltinMeaning uni fun) => BuiltinSemanticsVariant fun -> CostModel machineCosts builtincosts -> MachineVariantParameters machineCosts fun val Source #
This just uses toBuiltinsRuntime function to convert a BuiltinCostModel to a BuiltinsRuntime.