| 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 ∷ ∀ n m. (KnownNat n, PrimMonad m) ⇒ StepCounter n (PrimState m) → m ()
- readCounter ∷ ∀ m n. PrimMonad m ⇒ StepCounter n (PrimState m) → Int → m Word8
- writeCounter ∷ ∀ 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_ ∷ ∀ 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 ∷ ∀ n m. (KnownNat n, PrimMonad m) ⇒ StepCounter n (PrimState m) → m () Source #
Reset all the counters in the given StepCounter to zero.
readCounter ∷ ∀ m n. PrimMonad m ⇒ StepCounter n (PrimState m) → Int → m Word8 Source #
Read the value of a counter.
writeCounter ∷ ∀ 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_ ∷ ∀ 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.