| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
UntypedPlutusCore.Evaluation.Machine.Cek.StepCounter
Synopsis
- newtype StepCounter (n :: Nat) s = StepCounter (MutablePrimArray s Word8)
- newCounter :: (KnownNat n, PrimMonad m) => Proxy n -> m (StepCounter n (PrimState m))
- resetCounter :: forall n m. (KnownNat n, PrimMonad m) => StepCounter n (PrimState m) -> m ()
- readCounter :: forall m n. PrimMonad m => StepCounter n (PrimState m) -> Int -> m Word8
- writeCounter :: forall m n. PrimMonad m => StepCounter n (PrimState m) -> Int -> Word8 -> m ()
- modifyCounter :: PrimMonad m => Int -> (Word8 -> Word8) -> StepCounter n (PrimState m) -> m Word8
- data Peano
- type family NatToPeano n where ...
- class Applicative f => UpwardsM f n where
- itraverseCounter_ :: forall n m. (UpwardsM m (NatToPeano n), PrimMonad m) => (Int -> Word8 -> m ()) -> StepCounter n (PrimState m) -> m ()
- iforCounter_ :: (UpwardsM m (NatToPeano n), PrimMonad m) => StepCounter n (PrimState m) -> (Int -> Word8 -> m ()) -> m ()
Documentation
newtype StepCounter (n :: Nat) s Source #
A set of Word8 counters that is used in the CEK machine
to count steps.
Constructors
| StepCounter (MutablePrimArray s Word8) |
newCounter :: (KnownNat n, PrimMonad m) => Proxy n -> m (StepCounter n (PrimState m)) Source #
Make a new StepCounter with the given number of counters.
resetCounter :: forall n m. (KnownNat n, PrimMonad m) => StepCounter n (PrimState m) -> m () Source #
Reset all the counters in the given StepCounter to zero.
readCounter :: forall m n. PrimMonad m => StepCounter n (PrimState m) -> Int -> m Word8 Source #
Read the value of a counter.
writeCounter :: forall m n. PrimMonad m => StepCounter n (PrimState m) -> Int -> Word8 -> m () Source #
Write to a counter.
modifyCounter :: PrimMonad m => Int -> (Word8 -> Word8) -> StepCounter n (PrimState m) -> m Word8 Source #
Modify the value of a counter. Returns the modified value.
type family NatToPeano n where ... Source #
Equations
| NatToPeano 0 = 'Z | |
| NatToPeano n = 'S (NatToPeano (n - 1)) |
class Applicative f => UpwardsM f n where Source #
Methods
upwardsM :: Int -> (Int -> f ()) -> f () Source #
upwardsM i k means k i *> k (i + 1) *> ... *> k (i + n - 1).
We use this function in order to statically unroll a loop in itraverseCounter_ through
instance resolution. This makes validation benchmarks a couple of percent faster.
itraverseCounter_ :: forall n m. (UpwardsM m (NatToPeano n), PrimMonad m) => (Int -> Word8 -> m ()) -> StepCounter n (PrimState m) -> m () Source #
Traverse the counters with an effectful function.
iforCounter_ :: (UpwardsM m (NatToPeano n), PrimMonad m) => StepCounter n (PrimState m) -> (Int -> Word8 -> m ()) -> m () Source #
Traverse the counters with an effectful function.