This implements quite some Plutus IR primitives, leaving aside those which have to make with encoding and cryptography, which require some thinking about their representation. Some additional notes:
This PR introduces a separation between a type and a term namespace. This was the only way I could resolve identifiers to their proper meanings, given that Plutus IR code (following Haskell) uses a lot of type/constructor punning.
The Data type is represented by an additional datatype defined internally.
Some commonalities between the Example and PlutusIR evaluators have been moved into a single Pirouette.Symbolic.Eval.Helpers module.
This implements quite some Plutus IR primitives, leaving aside those which have to make with encoding and cryptography, which require some thinking about their representation. Some additional notes:
Data
type is represented by an additional datatype defined internally.Example
andPlutusIR
evaluators have been moved into a singlePirouette.Symbolic.Eval.Helpers
module.