| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
UntypedPlutusCore.Evaluation.Machine.SteppableCek
Description
The API to the Steppable CEK machine. Provides the same interface to original CEK machine.
Synopsis
- runCek :: forall (uni :: Type -> Type) fun ann cost. ThrowableBuiltins uni fun => MachineParameters CekMachineCosts fun (CekValue uni fun ann) -> ExBudgetMode cost uni fun -> EmitterMode uni fun -> Term Name uni fun ann -> CekReport cost Name uni fun
- runCekDeBruijn :: forall (uni :: Type -> Type) fun ann cost. ThrowableBuiltins uni fun => MachineParameters CekMachineCosts fun (CekValue uni fun ann) -> ExBudgetMode cost uni fun -> EmitterMode uni fun -> NTerm uni fun ann -> CekReport cost NamedDeBruijn uni fun
- runCekNoEmit :: forall (uni :: Type -> Type) fun ann cost. ThrowableBuiltins uni fun => MachineParameters CekMachineCosts fun (CekValue uni fun ann) -> ExBudgetMode cost uni fun -> Term Name uni fun ann -> (Either (CekEvaluationException Name uni fun) (Term Name uni fun ()), cost)
- evaluateCek :: forall (uni :: Type -> Type) fun ann. ThrowableBuiltins uni fun => EmitterMode uni fun -> MachineParameters CekMachineCosts fun (CekValue uni fun ann) -> Term Name uni fun ann -> (Either (CekEvaluationException Name uni fun) (Term Name uni fun ()), [Text])
- evaluateCekNoEmit :: forall (uni :: Type -> Type) fun ann. ThrowableBuiltins uni fun => MachineParameters CekMachineCosts fun (CekValue uni fun ann) -> Term Name uni fun ann -> Either (CekEvaluationException Name uni fun) (Term Name uni fun ())
- data EvaluationResult a
- splitStructuralOperational :: Either (EvaluationException structural operational term) a -> Either (ErrorWithCause structural term) (EvaluationResult a)
- unsafeSplitStructuralOperational :: (PrettyPlc structural, PrettyPlc term, Typeable structural, Typeable term) => Either (EvaluationException structural operational term) a -> EvaluationResult a
- data CekUserError
- data ErrorWithCause err cause = ErrorWithCause {}
- type CekEvaluationException name (uni :: Type -> Type) fun = EvaluationException (MachineError fun) CekUserError (Term name uni fun ())
- data EvaluationError structural operational
- = StructuralError !structural
- | OperationalError !operational
- data ExBudgetCategory fun
- = BStep StepKind
- | BBuiltinApp fun
- | BStartup
- newtype CekBudgetSpender (uni :: Type -> Type) fun s = CekBudgetSpender {
- unCekBudgetSpender :: ExBudgetCategory fun -> ExBudget -> CekM uni fun s ()
- newtype ExBudgetMode cost (uni :: Type -> Type) fun = ExBudgetMode {
- unExBudgetMode :: forall s. ST s (ExBudgetInfo cost uni fun s)
- data StepKind
- newtype CekExTally fun = CekExTally (MonoidalHashMap (ExBudgetCategory fun) ExBudget)
- newtype CountingSt = CountingSt ExBudget
- data TallyingSt fun = TallyingSt (CekExTally fun) ExBudget
- newtype RestrictingSt = RestrictingSt ExRestrictingBudget
- type CekMachineCosts = CekMachineCostsBase Identity
- counting :: forall (uni :: Type -> Type) fun. ExBudgetMode CountingSt uni fun
- tallying :: forall fun (uni :: Type -> Type). Hashable fun => ExBudgetMode (TallyingSt fun) uni fun
- restricting :: forall (uni :: Type -> Type) fun. ThrowableBuiltins uni fun => ExRestrictingBudget -> ExBudgetMode RestrictingSt uni fun
- restrictingEnormous :: forall (uni :: Type -> Type) fun. ThrowableBuiltins uni fun => ExBudgetMode RestrictingSt uni fun
- enormousBudget :: ExRestrictingBudget
- noEmitter :: forall (uni :: Type -> Type) fun. EmitterMode uni fun
- logEmitter :: forall (uni :: Type -> Type) fun. EmitterMode uni fun
- logWithTimeEmitter :: forall (uni :: Type -> Type) fun. EmitterMode uni fun
- logWithBudgetEmitter :: forall (uni :: Type -> Type) fun. EmitterMode uni fun
- logWithCallTraceEmitter :: forall (uni :: Type -> Type) fun. EmitterMode uni fun
- data CekValue (uni :: Type -> Type) fun ann
- readKnownCek :: forall (uni :: Type -> Type) fun a ann. (ThrowableBuiltins uni fun, ReadKnown (Term Name uni fun ()) a) => MachineParameters CekMachineCosts fun (CekValue uni fun ann) -> Term Name uni fun ann -> Either (CekEvaluationException Name uni fun) a
- class Eq a => Hashable a
- type ThrowableBuiltins (uni :: Type -> Type) fun = (PrettyUni uni, Pretty fun, Typeable uni, Typeable fun)
Running the machine
runCek :: forall (uni :: Type -> Type) fun ann cost. ThrowableBuiltins uni fun => MachineParameters CekMachineCosts fun (CekValue uni fun ann) -> ExBudgetMode cost uni fun -> EmitterMode uni fun -> Term Name uni fun ann -> CekReport cost Name uni fun Source #
Evaluate a term using the Steppable CEK machine with logging enabled and keep track of costing. A wrapper around the internal runCek to debruijn input and undebruijn output. *THIS FUNCTION IS PARTIAL if the input term contains free variables*
runCekDeBruijn :: forall (uni :: Type -> Type) fun ann cost. ThrowableBuiltins uni fun => MachineParameters CekMachineCosts fun (CekValue uni fun ann) -> ExBudgetMode cost uni fun -> EmitterMode uni fun -> NTerm uni fun ann -> CekReport cost NamedDeBruijn uni fun Source #
runCekNoEmit :: forall (uni :: Type -> Type) fun ann cost. ThrowableBuiltins uni fun => MachineParameters CekMachineCosts fun (CekValue uni fun ann) -> ExBudgetMode cost uni fun -> Term Name uni fun ann -> (Either (CekEvaluationException Name uni fun) (Term Name uni fun ()), cost) Source #
Evaluate a term using the Steppable CEK machine with logging disabled and keep track of costing. *THIS FUNCTION IS PARTIAL if the input term contains free variables*
evaluateCek :: forall (uni :: Type -> Type) fun ann. ThrowableBuiltins uni fun => EmitterMode uni fun -> MachineParameters CekMachineCosts fun (CekValue uni fun ann) -> Term Name uni fun ann -> (Either (CekEvaluationException Name uni fun) (Term Name uni fun ()), [Text]) Source #
Evaluate a term using the Steppable CEK machine with logging enabled. *THIS FUNCTION IS PARTIAL if the input term contains free variables*
evaluateCekNoEmit :: forall (uni :: Type -> Type) fun ann. ThrowableBuiltins uni fun => MachineParameters CekMachineCosts fun (CekValue uni fun ann) -> Term Name uni fun ann -> Either (CekEvaluationException Name uni fun) (Term Name uni fun ()) Source #
Evaluate a term using the Steppable CEK machine with logging disabled. *THIS FUNCTION IS PARTIAL if the input term contains free variables*
data EvaluationResult a Source #
The parameterized type of results various evaluation engines return.
Constructors
| EvaluationSuccess !a | |
| EvaluationFailure |
Instances
splitStructuralOperational :: Either (EvaluationException structural operational term) a -> Either (ErrorWithCause structural term) (EvaluationResult a) Source #
Preserve the contents of an StructuralError as a Left and turn an
OperationalError into a Right EvaluationFailure (thus erasing the content of the
error in the latter case).
unsafeSplitStructuralOperational :: (PrettyPlc structural, PrettyPlc term, Typeable structural, Typeable term) => Either (EvaluationException structural operational term) a -> EvaluationResult a Source #
Throw on a StructuralError and turn an OperationalError into an
EvaluationFailure (thus erasing the content of the error in the latter case).
Errors
data CekUserError Source #
Constructors
| CekCaseBuiltinError Text |
|
| CekOutOfExError !ExRestrictingBudget | The final overspent (i.e. negative) budget. |
| CekEvaluationFailure | Error has been called or a builtin application has failed |
Instances
| Generic CekUserError Source # | |||||
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.Internal Associated Types
Methods from :: CekUserError -> Rep CekUserError x Source # to :: Rep CekUserError x -> CekUserError Source # | |||||
| Show CekUserError Source # | |||||
| NFData CekUserError Source # | |||||
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.Internal Methods rnf :: CekUserError -> () Source # | |||||
| Eq CekUserError Source # | |||||
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.Internal Methods (==) :: CekUserError -> CekUserError -> Bool Source # (/=) :: CekUserError -> CekUserError -> Bool Source # | |||||
| Pretty CekUserError Source # | |||||
| BuiltinErrorToEvaluationError (MachineError fun) CekUserError Source # | |||||
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.Internal Methods builtinErrorToEvaluationError :: BuiltinError -> EvaluationError (MachineError fun) CekUserError Source # | |||||
| ThrowableBuiltins uni fun => MonadError (CekEvaluationException NamedDeBruijn uni fun) (CekM uni fun s) Source # | |||||
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.Internal Methods throwError :: CekEvaluationException NamedDeBruijn uni fun -> CekM uni fun s a Source # catchError :: CekM uni fun s a -> (CekEvaluationException NamedDeBruijn uni fun -> CekM uni fun s a) -> CekM uni fun s a Source # | |||||
| type Rep CekUserError Source # | |||||
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.Internal type Rep CekUserError = D1 ('MetaData "CekUserError" "UntypedPlutusCore.Evaluation.Machine.Cek.Internal" "plutus-core-1.60.0.0-LXFqBsoUlXsJIEqLytHte7" 'False) (C1 ('MetaCons "CekCaseBuiltinError" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)) :+: (C1 ('MetaCons "CekOutOfExError" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ExRestrictingBudget)) :+: C1 ('MetaCons "CekEvaluationFailure" 'PrefixI 'False) (U1 :: Type -> Type))) | |||||
data ErrorWithCause err cause Source #
An error and (optionally) what caused it.
Constructors
| ErrorWithCause | |
Instances
| Bifunctor ErrorWithCause Source # | |||||
Defined in PlutusCore.Evaluation.ErrorWithCause Methods bimap :: (a -> b) -> (c -> d) -> ErrorWithCause a c -> ErrorWithCause b d Source # first :: (a -> b) -> ErrorWithCause a c -> ErrorWithCause b c Source # second :: (b -> c) -> ErrorWithCause a b -> ErrorWithCause a c Source # | |||||
| (PrettyBy config cause, PrettyBy config err) => PrettyBy config (ErrorWithCause err cause) Source # | |||||
Defined in PlutusCore.Evaluation.ErrorWithCause Methods prettyBy :: config -> ErrorWithCause err cause -> Doc ann # prettyListBy :: config -> [ErrorWithCause err cause] -> Doc ann # | |||||
| Foldable (ErrorWithCause err) Source # | |||||
Defined in PlutusCore.Evaluation.ErrorWithCause Methods fold :: Monoid m => ErrorWithCause err m -> m Source # foldMap :: Monoid m => (a -> m) -> ErrorWithCause err a -> m Source # foldMap' :: Monoid m => (a -> m) -> ErrorWithCause err a -> m Source # foldr :: (a -> b -> b) -> b -> ErrorWithCause err a -> b Source # foldr' :: (a -> b -> b) -> b -> ErrorWithCause err a -> b Source # foldl :: (b -> a -> b) -> b -> ErrorWithCause err a -> b Source # foldl' :: (b -> a -> b) -> b -> ErrorWithCause err a -> b Source # foldr1 :: (a -> a -> a) -> ErrorWithCause err a -> a Source # foldl1 :: (a -> a -> a) -> ErrorWithCause err a -> a Source # toList :: ErrorWithCause err a -> [a] Source # null :: ErrorWithCause err a -> Bool Source # length :: ErrorWithCause err a -> Int Source # elem :: Eq a => a -> ErrorWithCause err a -> Bool Source # maximum :: Ord a => ErrorWithCause err a -> a Source # minimum :: Ord a => ErrorWithCause err a -> a Source # sum :: Num a => ErrorWithCause err a -> a Source # product :: Num a => ErrorWithCause err a -> a Source # | |||||
| Traversable (ErrorWithCause err) Source # | |||||
Defined in PlutusCore.Evaluation.ErrorWithCause Methods traverse :: Applicative f => (a -> f b) -> ErrorWithCause err a -> f (ErrorWithCause err b) Source # sequenceA :: Applicative f => ErrorWithCause err (f a) -> f (ErrorWithCause err a) Source # mapM :: Monad m => (a -> m b) -> ErrorWithCause err a -> m (ErrorWithCause err b) Source # sequence :: Monad m => ErrorWithCause err (m a) -> m (ErrorWithCause err a) Source # | |||||
| Functor (ErrorWithCause err) Source # | |||||
Defined in PlutusCore.Evaluation.ErrorWithCause Methods fmap :: (a -> b) -> ErrorWithCause err a -> ErrorWithCause err b Source # (<$) :: a -> ErrorWithCause err b -> ErrorWithCause err a Source # | |||||
| (PrettyPlc cause, PrettyPlc err, Typeable cause, Typeable err) => Exception (ErrorWithCause err cause) Source # | |||||
Defined in PlutusCore.Evaluation.ErrorWithCause Methods toException :: ErrorWithCause err cause -> SomeException Source # fromException :: SomeException -> Maybe (ErrorWithCause err cause) Source # displayException :: ErrorWithCause err cause -> String Source # | |||||
| Generic (ErrorWithCause err cause) Source # | |||||
Defined in PlutusCore.Evaluation.ErrorWithCause Associated Types
Methods from :: ErrorWithCause err cause -> Rep (ErrorWithCause err cause) x Source # to :: Rep (ErrorWithCause err cause) x -> ErrorWithCause err cause Source # | |||||
| (PrettyPlc cause, PrettyPlc err) => Show (ErrorWithCause err cause) Source # | |||||
Defined in PlutusCore.Evaluation.ErrorWithCause | |||||
| (NFData err, NFData cause) => NFData (ErrorWithCause err cause) Source # | |||||
Defined in PlutusCore.Evaluation.ErrorWithCause Methods rnf :: ErrorWithCause err cause -> () Source # | |||||
| (Eq err, Eq cause) => Eq (ErrorWithCause err cause) Source # | |||||
Defined in PlutusCore.Evaluation.ErrorWithCause Methods (==) :: ErrorWithCause err cause -> ErrorWithCause err cause -> Bool Source # (/=) :: ErrorWithCause err cause -> ErrorWithCause err cause -> Bool Source # | |||||
| (Pretty err, Pretty cause) => Pretty (ErrorWithCause err cause) Source # | |||||
Defined in PlutusCore.Evaluation.ErrorWithCause Methods pretty :: ErrorWithCause err cause -> Doc ann # prettyList :: [ErrorWithCause err cause] -> Doc ann # | |||||
| ThrowableBuiltins uni fun => MonadError (CekEvaluationException NamedDeBruijn uni fun) (CekM uni fun s) Source # | |||||
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.Internal Methods throwError :: CekEvaluationException NamedDeBruijn uni fun -> CekM uni fun s a Source # catchError :: CekM uni fun s a -> (CekEvaluationException NamedDeBruijn uni fun -> CekM uni fun s a) -> CekM uni fun s a Source # | |||||
| type Rep (ErrorWithCause err cause) Source # | |||||
Defined in PlutusCore.Evaluation.ErrorWithCause type Rep (ErrorWithCause err cause) = D1 ('MetaData "ErrorWithCause" "PlutusCore.Evaluation.ErrorWithCause" "plutus-core-1.60.0.0-LXFqBsoUlXsJIEqLytHte7" 'False) (C1 ('MetaCons "ErrorWithCause" 'PrefixI 'True) (S1 ('MetaSel ('Just "_ewcError") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 err) :*: S1 ('MetaSel ('Just "_ewcCause") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe cause)))) | |||||
type CekEvaluationException name (uni :: Type -> Type) fun = EvaluationException (MachineError fun) CekUserError (Term name uni fun ()) Source #
The CEK machine-specific EvaluationException.
data EvaluationError structural operational Source #
The type of errors that can occur during evaluation. There are two kinds of errors:
- Structural ones -- these are errors that are indicative of the _structure_ of the program being
wrong. For example, a free variable was encountered during evaluation, a non-function was
applied to an argument or
tailListwas applied to a non-list. - Operational ones -- these are errors that are indicative of the _logic_ of the program being
wrong. For example,
errorwas executed,tailListwas applied to an empty list or evaluation ran out of gas.
On the chain both of these are just regular failures and we don't distinguish between them there: if a script fails, it fails, it doesn't matter what the reason was. However in the tests it does matter why the failure occurred: a structural error may indicate that the test was written incorrectly while an operational error may be entirely expected.
In other words, structural errors are "runtime type errors" and operational errors are regular runtime errors. Which means that evaluating an (erased) well-typed program should never produce a structural error, only an operational one. This creates a sort of "runtime type system" for UPLC and it would be great to stick to it and enforce in tests etc, but we currently don't.
Constructors
| StructuralError !structural | |
| OperationalError !operational |
Instances
| Bifoldable EvaluationError Source # | |||||
Defined in PlutusCore.Evaluation.Error Methods bifold :: Monoid m => EvaluationError m m -> m Source # bifoldMap :: Monoid m => (a -> m) -> (b -> m) -> EvaluationError a b -> m Source # bifoldr :: (a -> c -> c) -> (b -> c -> c) -> c -> EvaluationError a b -> c Source # bifoldl :: (c -> a -> c) -> (c -> b -> c) -> c -> EvaluationError a b -> c Source # | |||||
| Bifunctor EvaluationError Source # | |||||
Defined in PlutusCore.Evaluation.Error Methods bimap :: (a -> b) -> (c -> d) -> EvaluationError a c -> EvaluationError b d Source # first :: (a -> b) -> EvaluationError a c -> EvaluationError b c Source # second :: (b -> c) -> EvaluationError a b -> EvaluationError a c Source # | |||||
| Bitraversable EvaluationError Source # | |||||
Defined in PlutusCore.Evaluation.Error Methods bitraverse :: Applicative f => (a -> f c) -> (b -> f d) -> EvaluationError a b -> f (EvaluationError c d) Source # | |||||
| (HasPrettyDefaults config ~ 'True, PrettyBy config structural, Pretty operational) => PrettyBy config (EvaluationError structural operational) Source # | |||||
Defined in PlutusCore.Evaluation.Error Methods prettyBy :: config -> EvaluationError structural operational -> Doc ann # prettyListBy :: config -> [EvaluationError structural operational] -> Doc ann # | |||||
| Functor (EvaluationError structural) Source # | |||||
Defined in PlutusCore.Evaluation.Error Methods fmap :: (a -> b) -> EvaluationError structural a -> EvaluationError structural b Source # (<$) :: a -> EvaluationError structural b -> EvaluationError structural a Source # | |||||
| Generic (EvaluationError structural operational) Source # | |||||
Defined in PlutusCore.Evaluation.Error Associated Types
Methods from :: EvaluationError structural operational -> Rep (EvaluationError structural operational) x Source # to :: Rep (EvaluationError structural operational) x -> EvaluationError structural operational Source # | |||||
| (Show structural, Show operational) => Show (EvaluationError structural operational) Source # | |||||
Defined in PlutusCore.Evaluation.Error | |||||
| (NFData structural, NFData operational) => NFData (EvaluationError structural operational) Source # | |||||
Defined in PlutusCore.Evaluation.Error Methods rnf :: EvaluationError structural operational -> () Source # | |||||
| (Eq structural, Eq operational) => Eq (EvaluationError structural operational) Source # | |||||
Defined in PlutusCore.Evaluation.Error Methods (==) :: EvaluationError structural operational -> EvaluationError structural operational -> Bool Source # (/=) :: EvaluationError structural operational -> EvaluationError structural operational -> Bool Source # | |||||
| (Pretty structural, Pretty operational) => Pretty (EvaluationError structural operational) Source # | |||||
Defined in PlutusCore.Evaluation.Error Methods pretty :: EvaluationError structural operational -> Doc ann # prettyList :: [EvaluationError structural operational] -> Doc ann # | |||||
| ThrowableBuiltins uni fun => MonadError (CekEvaluationException NamedDeBruijn uni fun) (CekM uni fun s) Source # | |||||
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.Internal Methods throwError :: CekEvaluationException NamedDeBruijn uni fun -> CekM uni fun s a Source # catchError :: CekM uni fun s a -> (CekEvaluationException NamedDeBruijn uni fun -> CekM uni fun s a) -> CekM uni fun s a Source # | |||||
| type Rep (EvaluationError structural operational) Source # | |||||
Defined in PlutusCore.Evaluation.Error type Rep (EvaluationError structural operational) = D1 ('MetaData "EvaluationError" "PlutusCore.Evaluation.Error" "plutus-core-1.60.0.0-LXFqBsoUlXsJIEqLytHte7" 'False) (C1 ('MetaCons "StructuralError" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 structural)) :+: C1 ('MetaCons "OperationalError" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 operational))) | |||||
Costing
data ExBudgetCategory fun Source #
Constructors
| BStep StepKind | |
| BBuiltinApp fun | |
| BStartup |
Instances
| ExBudgetBuiltin fun (ExBudgetCategory fun) Source # | |||||
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.Internal Methods exBudgetBuiltin :: fun -> ExBudgetCategory fun Source # | |||||
| Generic (ExBudgetCategory fun) Source # | |||||
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.Internal Associated Types
Methods from :: ExBudgetCategory fun -> Rep (ExBudgetCategory fun) x Source # to :: Rep (ExBudgetCategory fun) x -> ExBudgetCategory fun Source # | |||||
| Show fun => Show (ExBudgetCategory fun) Source # | |||||
| NFData fun => NFData (ExBudgetCategory fun) Source # | |||||
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.Internal Methods rnf :: ExBudgetCategory fun -> () Source # | |||||
| Eq fun => Eq (ExBudgetCategory fun) Source # | |||||
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.Internal Methods (==) :: ExBudgetCategory fun -> ExBudgetCategory fun -> Bool Source # (/=) :: ExBudgetCategory fun -> ExBudgetCategory fun -> Bool Source # | |||||
| Ord fun => Ord (ExBudgetCategory fun) Source # | |||||
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.Internal Methods compare :: ExBudgetCategory fun -> ExBudgetCategory fun -> Ordering Source # (<) :: ExBudgetCategory fun -> ExBudgetCategory fun -> Bool Source # (<=) :: ExBudgetCategory fun -> ExBudgetCategory fun -> Bool Source # (>) :: ExBudgetCategory fun -> ExBudgetCategory fun -> Bool Source # (>=) :: ExBudgetCategory fun -> ExBudgetCategory fun -> Bool Source # max :: ExBudgetCategory fun -> ExBudgetCategory fun -> ExBudgetCategory fun Source # min :: ExBudgetCategory fun -> ExBudgetCategory fun -> ExBudgetCategory fun Source # | |||||
| Hashable fun => Hashable (ExBudgetCategory fun) Source # | |||||
| Show fun => Pretty (ExBudgetCategory fun) Source # | |||||
| type Rep (ExBudgetCategory fun) Source # | |||||
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.Internal type Rep (ExBudgetCategory fun) = D1 ('MetaData "ExBudgetCategory" "UntypedPlutusCore.Evaluation.Machine.Cek.Internal" "plutus-core-1.60.0.0-LXFqBsoUlXsJIEqLytHte7" 'False) (C1 ('MetaCons "BStep" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 StepKind)) :+: (C1 ('MetaCons "BBuiltinApp" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 fun)) :+: C1 ('MetaCons "BStartup" 'PrefixI 'False) (U1 :: Type -> Type))) | |||||
newtype CekBudgetSpender (uni :: Type -> Type) fun s Source #
The CEK machine is parameterized over a spendBudget function. This makes the budgeting machinery extensible
and allows us to separate budgeting logic from evaluation logic and avoid branching on the union
of all possible budgeting state types during evaluation.
Constructors
| CekBudgetSpender | |
Fields
| |
newtype ExBudgetMode cost (uni :: Type -> Type) fun Source #
A budgeting mode to execute the CEK machine in.
Constructors
| ExBudgetMode | |
Fields
| |
Instances
| Bounded StepKind Source # | |||||
| Enum StepKind Source # | |||||
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.Internal Methods succ :: StepKind -> StepKind Source # pred :: StepKind -> StepKind Source # toEnum :: Int -> StepKind Source # fromEnum :: StepKind -> Int Source # enumFrom :: StepKind -> [StepKind] Source # enumFromThen :: StepKind -> StepKind -> [StepKind] Source # enumFromTo :: StepKind -> StepKind -> [StepKind] Source # enumFromThenTo :: StepKind -> StepKind -> StepKind -> [StepKind] Source # | |||||
| Generic StepKind Source # | |||||
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.Internal Associated Types
| |||||
| Show StepKind Source # | |||||
| NFData StepKind Source # | |||||
| Eq StepKind Source # | |||||
| Ord StepKind Source # | |||||
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.Internal | |||||
| Hashable StepKind Source # | |||||
| type Rep StepKind Source # | |||||
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.Internal type Rep StepKind = D1 ('MetaData "StepKind" "UntypedPlutusCore.Evaluation.Machine.Cek.Internal" "plutus-core-1.60.0.0-LXFqBsoUlXsJIEqLytHte7" 'False) (((C1 ('MetaCons "BConst" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "BVar" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "BLamAbs" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "BApply" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "BDelay" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "BForce" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "BBuiltin" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "BConstr" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "BCase" 'PrefixI 'False) (U1 :: Type -> Type))))) | |||||
newtype CekExTally fun Source #
For a detailed report on what costs how much + the same overall budget that Counting gives.
The (derived) Monoid instance of CekExTally is the main piece of the machinery.
Constructors
| CekExTally (MonoidalHashMap (ExBudgetCategory fun) ExBudget) |
Instances
| (Show fun, Ord fun) => PrettyBy config (CekExTally fun) Source # | |||||
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.ExBudgetMode Methods prettyBy :: config -> CekExTally fun -> Doc ann # prettyListBy :: config -> [CekExTally fun] -> Doc ann # | |||||
| Hashable fun => Monoid (CekExTally fun) Source # | |||||
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.ExBudgetMode Methods mempty :: CekExTally fun Source # mappend :: CekExTally fun -> CekExTally fun -> CekExTally fun Source # mconcat :: [CekExTally fun] -> CekExTally fun Source # | |||||
| Hashable fun => Semigroup (CekExTally fun) Source # | |||||
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.ExBudgetMode Methods (<>) :: CekExTally fun -> CekExTally fun -> CekExTally fun Source # sconcat :: NonEmpty (CekExTally fun) -> CekExTally fun Source # stimes :: Integral b => b -> CekExTally fun -> CekExTally fun Source # | |||||
| Generic (CekExTally fun) Source # | |||||
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.ExBudgetMode Associated Types
Methods from :: CekExTally fun -> Rep (CekExTally fun) x Source # to :: Rep (CekExTally fun) x -> CekExTally fun Source # | |||||
| Show fun => Show (CekExTally fun) Source # | |||||
| NFData fun => NFData (CekExTally fun) Source # | |||||
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.ExBudgetMode Methods rnf :: CekExTally fun -> () Source # | |||||
| Eq fun => Eq (CekExTally fun) Source # | |||||
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.ExBudgetMode Methods (==) :: CekExTally fun -> CekExTally fun -> Bool Source # (/=) :: CekExTally fun -> CekExTally fun -> Bool Source # | |||||
| (Show fun, Ord fun) => Pretty (CekExTally fun) Source # | |||||
| type Rep (CekExTally fun) Source # | |||||
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.ExBudgetMode type Rep (CekExTally fun) = D1 ('MetaData "CekExTally" "UntypedPlutusCore.Evaluation.Machine.Cek.ExBudgetMode" "plutus-core-1.60.0.0-LXFqBsoUlXsJIEqLytHte7" 'True) (C1 ('MetaCons "CekExTally" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (MonoidalHashMap (ExBudgetCategory fun) ExBudget)))) | |||||
newtype CountingSt Source #
Constructors
| CountingSt ExBudget |
Instances
| Monoid CountingSt Source # | |
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.ExBudgetMode Methods mempty :: CountingSt Source # mappend :: CountingSt -> CountingSt -> CountingSt Source # mconcat :: [CountingSt] -> CountingSt Source # | |
| Semigroup CountingSt Source # | |
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.ExBudgetMode Methods (<>) :: CountingSt -> CountingSt -> CountingSt Source # sconcat :: NonEmpty CountingSt -> CountingSt Source # stimes :: Integral b => b -> CountingSt -> CountingSt Source # | |
| Show CountingSt Source # | |
| NFData CountingSt Source # | |
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.ExBudgetMode Methods rnf :: CountingSt -> () Source # | |
| Eq CountingSt Source # | |
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.ExBudgetMode Methods (==) :: CountingSt -> CountingSt -> Bool Source # (/=) :: CountingSt -> CountingSt -> Bool Source # | |
| Pretty CountingSt Source # | |
| PrettyBy config CountingSt Source # | |
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.ExBudgetMode Methods prettyBy :: config -> CountingSt -> Doc ann # prettyListBy :: config -> [CountingSt] -> Doc ann # | |
data TallyingSt fun Source #
Constructors
| TallyingSt (CekExTally fun) ExBudget |
Instances
| (Show fun, Ord fun) => PrettyBy config (TallyingSt fun) Source # | |||||
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.ExBudgetMode Methods prettyBy :: config -> TallyingSt fun -> Doc ann # prettyListBy :: config -> [TallyingSt fun] -> Doc ann # | |||||
| Hashable fun => Monoid (TallyingSt fun) Source # | |||||
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.ExBudgetMode Methods mempty :: TallyingSt fun Source # mappend :: TallyingSt fun -> TallyingSt fun -> TallyingSt fun Source # mconcat :: [TallyingSt fun] -> TallyingSt fun Source # | |||||
| Hashable fun => Semigroup (TallyingSt fun) Source # | |||||
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.ExBudgetMode Methods (<>) :: TallyingSt fun -> TallyingSt fun -> TallyingSt fun Source # sconcat :: NonEmpty (TallyingSt fun) -> TallyingSt fun Source # stimes :: Integral b => b -> TallyingSt fun -> TallyingSt fun Source # | |||||
| Generic (TallyingSt fun) Source # | |||||
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.ExBudgetMode Associated Types
Methods from :: TallyingSt fun -> Rep (TallyingSt fun) x Source # to :: Rep (TallyingSt fun) x -> TallyingSt fun Source # | |||||
| Show fun => Show (TallyingSt fun) Source # | |||||
| NFData fun => NFData (TallyingSt fun) Source # | |||||
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.ExBudgetMode Methods rnf :: TallyingSt fun -> () Source # | |||||
| Eq fun => Eq (TallyingSt fun) Source # | |||||
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.ExBudgetMode Methods (==) :: TallyingSt fun -> TallyingSt fun -> Bool Source # (/=) :: TallyingSt fun -> TallyingSt fun -> Bool Source # | |||||
| (Show fun, Ord fun) => Pretty (TallyingSt fun) Source # | |||||
| type Rep (TallyingSt fun) Source # | |||||
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.ExBudgetMode type Rep (TallyingSt fun) = D1 ('MetaData "TallyingSt" "UntypedPlutusCore.Evaluation.Machine.Cek.ExBudgetMode" "plutus-core-1.60.0.0-LXFqBsoUlXsJIEqLytHte7" 'False) (C1 ('MetaCons "TallyingSt" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (CekExTally fun)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 ExBudget))) | |||||
newtype RestrictingSt Source #
Constructors
| RestrictingSt ExRestrictingBudget |
Instances
| Monoid RestrictingSt Source # | |
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.ExBudgetMode Methods mempty :: RestrictingSt Source # mappend :: RestrictingSt -> RestrictingSt -> RestrictingSt Source # mconcat :: [RestrictingSt] -> RestrictingSt Source # | |
| Semigroup RestrictingSt Source # | |
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.ExBudgetMode Methods (<>) :: RestrictingSt -> RestrictingSt -> RestrictingSt Source # sconcat :: NonEmpty RestrictingSt -> RestrictingSt Source # stimes :: Integral b => b -> RestrictingSt -> RestrictingSt Source # | |
| Show RestrictingSt Source # | |
| NFData RestrictingSt Source # | |
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.ExBudgetMode Methods rnf :: RestrictingSt -> () Source # | |
| Eq RestrictingSt Source # | |
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.ExBudgetMode Methods (==) :: RestrictingSt -> RestrictingSt -> Bool Source # (/=) :: RestrictingSt -> RestrictingSt -> Bool Source # | |
| Pretty RestrictingSt Source # | |
| PrettyBy config RestrictingSt Source # | |
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.ExBudgetMode Methods prettyBy :: config -> RestrictingSt -> Doc ann # prettyListBy :: config -> [RestrictingSt] -> Doc ann # | |
type CekMachineCosts = CekMachineCostsBase Identity Source #
Costs for evaluating AST nodes. Times should be specified in picoseconds, memory sizes in bytes.
Costing modes
counting :: forall (uni :: Type -> Type) fun. ExBudgetMode CountingSt uni fun Source #
For calculating the cost of execution.
tallying :: forall fun (uni :: Type -> Type). Hashable fun => ExBudgetMode (TallyingSt fun) uni fun Source #
For a detailed report on what costs how much + the same overall budget that Counting gives.
restricting :: forall (uni :: Type -> Type) fun. ThrowableBuiltins uni fun => ExRestrictingBudget -> ExBudgetMode RestrictingSt uni fun Source #
For execution, to avoid overruns.
restrictingEnormous :: forall (uni :: Type -> Type) fun. ThrowableBuiltins uni fun => ExBudgetMode RestrictingSt uni fun Source #
restricting instantiated at enormousBudget.
enormousBudget :: ExRestrictingBudget Source #
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.
Emitter modes
logEmitter :: forall (uni :: Type -> Type) fun. EmitterMode uni fun Source #
Emits log only.
logWithTimeEmitter :: forall (uni :: Type -> Type) fun. EmitterMode uni fun Source #
Emits log with timestamp.
logWithBudgetEmitter :: forall (uni :: Type -> Type) fun. EmitterMode uni fun Source #
Emits log with the budget.
logWithCallTraceEmitter :: forall (uni :: Type -> Type) fun. EmitterMode uni fun Source #
Emits log and, when script evaluation fails, call trace.
This requires script to be compiled with `PlutusTx.Plugin:profile-all` turned on because this relies
on compiler-generated trace calls that notifies entrance and exit of a function call. These traces
that mark entrance and exit are ordinary traces like "-> rob:Example.hs:3:1-3:15" and "<-
bob:Example.hs:1:1-1:13" with "->" and "<-" prefixies, where "bob" and "rob" is the name
of the function with source span. If regular script with no entrance/exit marker is given, this
emitter will behave identically to logEmitter.
When script evaluation fails, this emitter will give call trace of the functions that led to the
evaluation failure. This is useful for pin-pointing specific area of the codebase that caused
failure when debugging a script. When script evaluation passes, every trace message generated by
`profile-all` flag will be removed, and this emitter will behave identically to logEmitter.
Misc
data CekValue (uni :: Type -> Type) fun ann Source #
Constructors
| VCon !(Some (ValueOf uni)) | |
| VDelay !(NTerm uni fun ann) !(CekValEnv uni fun ann) | |
| VLamAbs !NamedDeBruijn !(NTerm uni fun ann) !(CekValEnv uni fun ann) | |
| VBuiltin | A partial builtin application, accumulating arguments for eventual full application.
We don't need a |
Fields
| |
| VConstr !Word64 !(EmptyOrMultiStack uni fun ann) | |
Instances
| (PrettyUni uni, Pretty fun) => PrettyBy PrettyConfigPlc (CekValue uni fun ann) Source # | |
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.Internal Methods prettyBy :: PrettyConfigPlc -> CekValue uni fun ann -> Doc ann0 # prettyListBy :: PrettyConfigPlc -> [CekValue uni fun ann] -> Doc ann0 # | |
| Show (BuiltinRuntime (CekValue uni fun ann)) Source # | |
| (GShow uni, Everywhere uni Show, Show fun, Show ann, Closed uni) => Show (CekValue uni fun ann) Source # | |
| HasConstant (CekValue uni fun ann) Source # | |
| (Closed uni, Everywhere uni ExMemoryUsage) => ExMemoryUsage (CekValue uni fun ann) Source # | |
Defined in UntypedPlutusCore.Evaluation.Machine.Cek.Internal Methods memoryUsage :: CekValue uni fun ann -> CostRose Source # | |
| type UniOf (CekValue uni fun ann) Source # | |
readKnownCek :: forall (uni :: Type -> Type) fun a ann. (ThrowableBuiltins uni fun, ReadKnown (Term Name uni fun ()) a) => MachineParameters CekMachineCosts fun (CekValue uni fun ann) -> Term Name uni fun ann -> Either (CekEvaluationException Name uni fun) a Source #
Unlift a value using the Steppable CEK machine. *THIS FUNCTION IS PARTIAL if the input term contains free variables*
Instances
| Hashable Key | |
Defined in Data.Aeson.Key | |
| Hashable Value | |
Defined in Data.Aeson.Types.Internal | |
| Hashable ByteArray | |
Defined in Data.Hashable.Class | |
| Hashable SomeTypeRep | |
Defined in Data.Hashable.Class | |
| Hashable Unique | |
Defined in Data.Hashable.Class | |
| Hashable Version | |
Defined in Data.Hashable.Class | |
| Hashable IntPtr | |
Defined in Data.Hashable.Class | |
| Hashable WordPtr | |
Defined in Data.Hashable.Class | |
| Hashable Void | |
Defined in Data.Hashable.Class | |
| Hashable ThreadId | |
Defined in Data.Hashable.Class | |
| Hashable Fingerprint | |
Defined in Data.Hashable.Class | |
| Hashable Int16 | |
Defined in Data.Hashable.Class | |
| Hashable Int32 | |
Defined in Data.Hashable.Class | |
| Hashable Int64 | |
Defined in Data.Hashable.Class | |
| Hashable Int8 | |
Defined in Data.Hashable.Class | |
| Hashable Word16 | |
Defined in Data.Hashable.Class | |
| Hashable Word32 | |
Defined in Data.Hashable.Class | |
| Hashable Word64 | |
Defined in Data.Hashable.Class | |
| Hashable Word8 | |
Defined in Data.Hashable.Class | |
| Hashable ByteString | |
Defined in Data.Hashable.Class | |
| Hashable ByteString | |
Defined in Data.Hashable.Class | |
| Hashable ShortByteString | |
Defined in Data.Hashable.Class | |
| Hashable IntSet | |
Defined in Data.Hashable.Class | |
| Hashable OsString | |
Defined in Data.Hashable.Class | |
| Hashable PosixString | |
Defined in Data.Hashable.Class | |
| Hashable WindowsString | |
Defined in Data.Hashable.Class | |
| Hashable BigNat | |
Defined in Data.Hashable.Class | |
| Hashable Ordering | |
Defined in Data.Hashable.Class | |
| Hashable OsString | |
Defined in Data.Hashable.Class | |
| Hashable PosixString | |
Defined in Data.Hashable.Class | |
| Hashable WindowsString | |
Defined in Data.Hashable.Class | |
| Hashable Ann Source # | |
Defined in PlutusCore.Annotation | |
| Hashable Inline Source # | |
Defined in PlutusCore.Annotation | |
| Hashable SrcSpan Source # | |
Defined in PlutusCore.Annotation | |
| Hashable SrcSpans Source # | |
Defined in PlutusCore.Annotation | |
| Hashable Element Source # | |
Defined in PlutusCore.Crypto.BLS12_381.G1 | |
| Hashable Element Source # | |
Defined in PlutusCore.Crypto.BLS12_381.G2 | |
| Hashable MlResult Source # | |
Defined in PlutusCore.Crypto.BLS12_381.Pairing | |
| Hashable Data Source # | |
Defined in PlutusCore.Data | |
| Hashable DeBruijn Source # | |
Defined in PlutusCore.DeBruijn.Internal | |
| Hashable FakeNamedDeBruijn Source # | |
Defined in PlutusCore.DeBruijn.Internal | |
| Hashable Index Source # | |
Defined in PlutusCore.DeBruijn.Internal | |
| Hashable NamedDeBruijn Source # | |
Defined in PlutusCore.DeBruijn.Internal | |
| Hashable DefaultFun Source # | |
Defined in PlutusCore.Default.Builtins | |
| Hashable ExtensionFun Source # | |
Defined in PlutusCore.Examples.Builtins | |
| Hashable Name Source # | |
Defined in PlutusCore.Name.Unique | |
| Hashable TermUnique Source # | |
Defined in PlutusCore.Name.Unique | |
| Hashable TyName Source # | |
Defined in PlutusCore.Name.Unique | |
| Hashable TypeUnique Source # | |
Defined in PlutusCore.Name.Unique | |
| Hashable Unique Source # | |
Defined in PlutusCore.Name.Unique | |
| Hashable K Source # | |
Defined in PlutusCore.Value | |
| Hashable Quantity Source # | |
Defined in PlutusCore.Value | |
| Hashable Value Source # | |
Defined in PlutusCore.Value | |
| Hashable Version Source # | |
Defined in PlutusCore.Version | |
| Hashable StepKind Source # | |
| Hashable Scientific | |
Defined in Data.Scientific | |
| Hashable Text | |
Defined in Data.Hashable.Class | |
| Hashable Text | |
Defined in Data.Hashable.Class | |
| Hashable ShortText | |
Defined in Data.Text.Short.Internal | |
| Hashable UUID | |
Defined in Data.UUID.Types.Internal | |
| Hashable Integer | |
Defined in Data.Hashable.Class | |
| Hashable Natural | |
Defined in Data.Hashable.Class | |
| Hashable () | |
Defined in Data.Hashable.Class | |
| Hashable Bool | |
Defined in Data.Hashable.Class | |
| Hashable Char | |
Defined in Data.Hashable.Class | |
| Hashable Double | |
Defined in Data.Hashable.Class | |
| Hashable Float | |
Defined in Data.Hashable.Class | |
| Hashable Int | |
Defined in Data.Hashable.Class | |
| Hashable Word | |
Defined in Data.Hashable.Class | |
| Hashable v => Hashable (KeyMap v) | |
Defined in Data.Aeson.KeyMap | |
| Hashable a => Hashable (Complex a) | |
Defined in Data.Hashable.Class | |
| Hashable a => Hashable (Identity a) | |
Defined in Data.Hashable.Class | |
| Hashable a => Hashable (First a) | |
Defined in Data.Hashable.Class | |
| Hashable a => Hashable (Last a) | |
Defined in Data.Hashable.Class | |
| Hashable a => Hashable (Max a) | |
Defined in Data.Hashable.Class | |
| Hashable a => Hashable (Min a) | |
Defined in Data.Hashable.Class | |
| Hashable a => Hashable (WrappedMonoid a) | |
Defined in Data.Hashable.Class | |
| Hashable a => Hashable (NonEmpty a) | |
Defined in Data.Hashable.Class | |
| Hashable (FunPtr a) | |
Defined in Data.Hashable.Class | |
| Hashable (Ptr a) | |
Defined in Data.Hashable.Class | |
| Hashable a => Hashable (Ratio a) | |
Defined in Data.Hashable.Class | |
| Hashable (StableName a) | |
Defined in Data.Hashable.Class | |
| Hashable v => Hashable (IntMap v) | |
Defined in Data.Hashable.Class | |
| Hashable v => Hashable (Seq v) | |
Defined in Data.Hashable.Class | |
| Hashable v => Hashable (Set v) | |
Defined in Data.Hashable.Class | |
| Hashable v => Hashable (Tree v) | |
Defined in Data.Hashable.Class | |
| Hashable1 f => Hashable (Fix f) | |
| Eq a => Hashable (Hashed a) | |
Defined in Data.Hashable.Class | |
| Hashable ann => Hashable (Kind ann) Source # | |
Defined in PlutusCore.Core.Type | |
| (Closed uni, GEq uni) => Hashable (SomeTypeIn uni) Source # | |
Defined in Universe.Core | |
| Hashable fun => Hashable (ExBudgetCategory fun) Source # | |
| Hashable a => Hashable (Leaf a) | |
Defined in Data.RAList.Tree.Internal | |
| Hashable a => Hashable (Maybe a) | |
Defined in Data.Strict.Maybe | |
| Hashable a => Hashable (HashSet a) | |
Defined in Data.HashSet.Internal | |
| Hashable a => Hashable (Vector a) Source # | |
Defined in UntypedPlutusCore.Core.Instance.Eq | |
| Hashable a => Hashable (Vector a) Source # | |
Defined in Data.Vector.Orphans | |
| Hashable a => Hashable (Maybe a) | |
Defined in Data.Hashable.Class | |
| Hashable a => Hashable (Solo a) | |
Defined in Data.Hashable.Class | |
| Hashable a => Hashable [a] | |
Defined in Data.Hashable.Class | |
| (Hashable a, Hashable b) => Hashable (Either a b) | |
Defined in Data.Hashable.Class | |
| Hashable (Fixed a) | |
Defined in Data.Hashable.Class | |
| Hashable (Proxy a) | |
Defined in Data.Hashable.Class | |
| Hashable a => Hashable (Arg a b) | |
Defined in Data.Hashable.Class | |
| Hashable (TypeRep a) | |
Defined in Data.Hashable.Class | |
| (Hashable k, Hashable v) => Hashable (Map k v) | |
Defined in Data.Hashable.Class | |
| (Hashable k, Hashable a) => Hashable (MonoidalHashMap k a) | |
Defined in Data.HashMap.Monoidal | |
| (Closed uni, GEq uni, Everywhere uni Eq, Everywhere uni Hashable) => Hashable (ValueOf uni a) Source # | |
Defined in Universe.Core | |
| Hashable (f a) => Hashable (Node f a) | |
Defined in Data.RAList.Tree.Internal | |
| (Closed uni, GEq uni, Everywhere uni Eq, Everywhere uni Hashable) => Hashable (Some (ValueOf uni)) Source # | |
Defined in Universe.Core | |
| (Hashable a, Hashable b) => Hashable (Either a b) | |
Defined in Data.Strict.Either | |
| (Hashable a, Hashable b) => Hashable (These a b) | |
Defined in Data.Strict.These | |
| (Hashable a, Hashable b) => Hashable (Pair a b) | |
Defined in Data.Strict.Tuple | |
| (Hashable a, Hashable b) => Hashable (These a b) | |
Defined in Data.These | |
| (Hashable k, Hashable v) => Hashable (HashMap k v) | |
Defined in Data.HashMap.Internal | |
| (Hashable a1, Hashable a2) => Hashable (a1, a2) | |
Defined in Data.Hashable.Class | |
| Hashable a => Hashable (Const a b) | |
Defined in Data.Hashable.Class | |
| (Hashable a1, Hashable a2, Hashable a3) => Hashable (a1, a2, a3) | |
Defined in Data.Hashable.Class | |
| (Hashable (f a), Hashable (g a)) => Hashable (Product f g a) | |
Defined in Data.Hashable.Class | |
| (Hashable (f a), Hashable (g a)) => Hashable (Sum f g a) | |
Defined in Data.Hashable.Class | |
| HashableTermConstraints uni fun ann => Hashable (Term DeBruijn uni fun ann) Source # | |
Defined in UntypedPlutusCore.Core.Instance.Eq | |
| HashableTermConstraints uni fun ann => Hashable (Term FakeNamedDeBruijn uni fun ann) Source # | |
Defined in UntypedPlutusCore.Core.Instance.Eq Methods hashWithSalt :: Int -> Term FakeNamedDeBruijn uni fun ann -> Int hash :: Term FakeNamedDeBruijn uni fun ann -> Int | |
| HashableTermConstraints uni fun ann => Hashable (Term NamedDeBruijn uni fun ann) Source # | |
Defined in UntypedPlutusCore.Core.Instance.Eq Methods hashWithSalt :: Int -> Term NamedDeBruijn uni fun ann -> Int hash :: Term NamedDeBruijn uni fun ann -> Int | |
| HashableTermConstraints uni fun ann => Hashable (Term Name uni fun ann) Source # | |
Defined in UntypedPlutusCore.Core.Instance.Eq | |
| (Hashable a1, Hashable a2, Hashable a3, Hashable a4) => Hashable (a1, a2, a3, a4) | |
Defined in Data.Hashable.Class | |
| Hashable (f (g a)) => Hashable (Compose f g a) | |
Defined in Data.Hashable.Class | |
| (Hashable a1, Hashable a2, Hashable a3, Hashable a4, Hashable a5) => Hashable (a1, a2, a3, a4, a5) | |
Defined in Data.Hashable.Class | |
| (Hashable a1, Hashable a2, Hashable a3, Hashable a4, Hashable a5, Hashable a6) => Hashable (a1, a2, a3, a4, a5, a6) | |
Defined in Data.Hashable.Class Methods hashWithSalt :: Int -> (a1, a2, a3, a4, a5, a6) -> Int | |
| (Hashable a1, Hashable a2, Hashable a3, Hashable a4, Hashable a5, Hashable a6, Hashable a7) => Hashable (a1, a2, a3, a4, a5, a6, a7) | |
Defined in Data.Hashable.Class Methods hashWithSalt :: Int -> (a1, a2, a3, a4, a5, a6, a7) -> Int | |