plutus-core-1.60.0.0: Language library for Plutus Core
Safe HaskellSafe-Inferred
LanguageHaskell2010

PlutusCore.Evaluation.Machine.ExBudget

Synopsis

Documentation

data ExBudget #

Constructors

ExBudget 

Instances

Instances details
Decoder s [ExBudget] #

PrettyBy config ExBudget # 
Instance details

Defined in PlutusCore.Evaluation.Machine.ExBudget

Methods

prettyBy :: config -> ExBudget -> Doc ann #

prettyListBy :: config -> [ExBudget] -> Doc ann #

Lift ExBudget # 
Instance details

Defined in PlutusCore.Evaluation.Machine.ExBudget

Methods

lift :: Quote m => ExBudget -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => ExBudget -> Code m ExBudget #

type Rep ExBudget # 
Instance details

Defined in PlutusCore.Evaluation.Machine.ExBudget

type Rep ExBudget = D1 ('MetaData "ExBudget" "PlutusCore.Evaluation.Machine.ExBudget" "plutus-core-1.60.0.0-inplace" 'False) (C1 ('MetaCons "ExBudget" 'PrefixI 'True) (S1 ('MetaSel ('Just "exBudgetCPU") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 ExCPU) :*: S1 ('MetaSel ('Just "exBudgetMemory") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 ExMemory)))

minusExBudget :: ExBudget -> ExBudget -> ExBudget #

Subtract one ExBudget from another. Does not guarantee that the result is positive.

class ExBudgetBuiltin fun exBudgetCat where #

A class for injecting a Builtin into an exBudgetCat. We need it, because the constant application machinery calls spendBudget before reducing a constant application and we want to be general over exBudgetCat there, but still track the built-in functions category, hence the ad hoc polymorphism.

Methods

exBudgetBuiltin :: fun -> exBudgetCat #

Instances

Instances details
ExBudgetBuiltin fun () #

A dummy ExBudgetBuiltin instance to be used in monads where we don't care about costing.

Instance details

Defined in PlutusCore.Evaluation.Machine.ExBudget

Methods

exBudgetBuiltin :: fun -> () #

ExBudgetBuiltin fun (ExBudgetCategory fun) # 
Instance details

Defined in UntypedPlutusCore.Evaluation.Machine.Cek.Internal

Methods

exBudgetBuiltin :: fun -> ExBudgetCategory fun #

newtype ExRestrictingBudget #

Instances

Instances details
Monoid ExRestrictingBudget # 
Instance details

Defined in PlutusCore.Evaluation.Machine.ExBudget

Semigroup ExRestrictingBudget # 
Instance details

Defined in PlutusCore.Evaluation.Machine.ExBudget

Show ExRestrictingBudget # 
Instance details

Defined in PlutusCore.Evaluation.Machine.ExBudget

NFData ExRestrictingBudget # 
Instance details

Defined in PlutusCore.Evaluation.Machine.ExBudget

Methods

rnf :: ExRestrictingBudget -> () #

Eq ExRestrictingBudget # 
Instance details

Defined in PlutusCore.Evaluation.Machine.ExBudget

Pretty ExRestrictingBudget # 
Instance details

Defined in PlutusCore.Evaluation.Machine.ExBudget

PrettyBy config ExRestrictingBudget # 
Instance details

Defined in PlutusCore.Evaluation.Machine.ExBudget

Methods

prettyBy :: config -> ExRestrictingBudget -> Doc ann #

prettyListBy :: config -> [ExRestrictingBudget] -> Doc ann #

data LowerInitialCharacter #

This is used elsewhere to convert cost models into JSON objects where the names of the fields are exactly the same as the names of the builtins.

Instances

Instances details
StringModifier LowerInitialCharacter # 
Instance details

Defined in PlutusCore.Evaluation.Machine.ExBudget

largeBudget :: ExRestrictingBudget #

When we want to just evaluate the program that is intended to run out of budget we use the Restricting mode with this big budget designed to make the CEK machine terminate in a fraction of a second on the reference machine.

enormousBudget :: ExRestrictingBudget #

When we want to just evaluate the program we use the Restricting mode with an enormous budget, so that evaluation costs of on-chain budgeting are reflected accurately in benchmarks.