plutus-core-1.0.0.1: Language library for Plutus Core
Safe HaskellNone
LanguageHaskell2010

PlutusCore.Evaluation.Machine.MachineParameters

Synopsis

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

Instances

Instances details
(Eq machinecosts, Eq builtincosts) => Eq (CostModel machinecosts builtincosts) Source # 
Instance details

Defined in PlutusCore.Evaluation.Machine.MachineParameters

Methods

(==) :: CostModel machinecosts builtincosts -> CostModel machinecosts builtincosts -> Bool Source #

(/=) :: CostModel machinecosts builtincosts -> CostModel machinecosts builtincosts -> Bool Source #

(Show machinecosts, Show builtincosts) => Show (CostModel machinecosts builtincosts) Source # 
Instance details

Defined in PlutusCore.Evaluation.Machine.MachineParameters

Methods

showsPrec :: Int -> CostModel machinecosts builtincosts -> ShowS Source #

show :: CostModel machinecosts builtincosts -> String Source #

showList :: [CostModel machinecosts builtincosts] -> ShowS Source #

machineCostModel :: forall machinecosts builtincosts machinecosts. Lens (CostModel machinecosts builtincosts) (CostModel machinecosts builtincosts) machinecosts machinecosts Source #

builtinCostModel :: forall machinecosts builtincosts builtincosts. Lens (CostModel machinecosts builtincosts) (CostModel machinecosts builtincosts) builtincosts builtincosts Source #

data MachineParameters machinecosts term (uni :: Type -> Type) (fun :: Type) 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. The term type will be CekValue when we're using this with the CEK machine.

Constructors

MachineParameters 

Fields

Instances

Instances details
Generic (MachineParameters machinecosts term uni fun) Source # 
Instance details

Defined in PlutusCore.Evaluation.Machine.MachineParameters

Associated Types

type Rep (MachineParameters machinecosts term uni fun) :: Type -> Type Source #

Methods

from :: MachineParameters machinecosts term uni fun -> Rep (MachineParameters machinecosts term uni fun) x Source #

to :: Rep (MachineParameters machinecosts term uni fun) x -> MachineParameters machinecosts term uni fun Source #

(NFData machinecosts, NFData fun) => NFData (MachineParameters machinecosts term uni fun) Source # 
Instance details

Defined in PlutusCore.Evaluation.Machine.MachineParameters

Methods

rnf :: MachineParameters machinecosts term uni fun -> () Source #

NoThunks machinecosts => NoThunks (MachineParameters machinecosts term uni fun) Source # 
Instance details

Defined in PlutusCore.Evaluation.Machine.MachineParameters

Methods

noThunks :: Context -> MachineParameters machinecosts term uni fun -> IO (Maybe ThunkInfo)

wNoThunks :: Context -> MachineParameters machinecosts term uni fun -> IO (Maybe ThunkInfo)

showTypeOf :: Proxy (MachineParameters machinecosts term uni fun) -> String

type Rep (MachineParameters machinecosts term uni fun) Source # 
Instance details

Defined in PlutusCore.Evaluation.Machine.MachineParameters

type Rep (MachineParameters machinecosts term uni fun) = D1 ('MetaData "MachineParameters" "PlutusCore.Evaluation.Machine.MachineParameters" "plutus-core-1.0.0.1-6wMiyL0yerXJu56t8zBoKx" 'False) (C1 ('MetaCons "MachineParameters" 'PrefixI 'True) (S1 ('MetaSel ('Just "machineCosts") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 machinecosts) :*: S1 ('MetaSel ('Just "builtinsRuntime") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (BuiltinsRuntime fun (term uni fun)))))

mkMachineParameters :: (CostingPart uni fun ~ builtincosts, HasConstantIn uni (val uni fun), ToBuiltinMeaning uni fun) => UnliftingMode -> CostModel machinecosts builtincosts -> MachineParameters machinecosts val uni fun Source #

This just uses toBuiltinsRuntime function to convert a BuiltinCostModel to a BuiltinsRuntime.