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

PlutusIR.Compiler.Types

Synopsis

Documentation

data AllowEscape Source #

Extra flag to be passed in the TypeCheckM Reader context, to signal if the PIR expression currently being typechecked is at the top-level and thus its type can escape, or nested and thus not allowed to escape.

Constructors

YesEscape 
NoEscape 

data PirTCConfig uni fun Source #

extending the plc typecheck config with AllowEscape

pirConfigTCConfig ∷ ∀ uni fun uni fun. Lens (PirTCConfig uni fun) (PirTCConfig uni fun) (TypeCheckConfig uni fun) (TypeCheckConfig uni fun) Source #

data DatatypeStyle Source #

What style to use when encoding datatypes. Generally, SumsOfProducts is superior, unless you are targeting an old Plutus Core language version.

See Note [Encoding of datatypes]

data CompilationCtx uni fun a Source #

Constructors

CompilationCtx 

Fields

ccTypeCheckConfig ∷ ∀ uni fun a. Lens' (CompilationCtx uni fun a) (PirTCConfig uni fun) Source #

ccRewriteRules ∷ ∀ uni fun a. Lens' (CompilationCtx uni fun a) (RewriteRules uni fun) Source #

ccOpts ∷ ∀ uni fun a. Lens' (CompilationCtx uni fun a) (CompilationOpts a) Source #

ccEnclosing ∷ ∀ uni fun a. Lens' (CompilationCtx uni fun a) (Provenance a) Source #

ccBuiltinsInfo ∷ ∀ uni fun a. Lens' (CompilationCtx uni fun a) (BuiltinsInfo uni fun) Source #

ccBuiltinCostModel ∷ ∀ uni fun a. Lens' (CompilationCtx uni fun a) (CostingPart uni fun) Source #

validateOptsCompiling m uni fun a ⇒ Version → m () Source #

withEnclosingMonadReader (CompilationCtx uni fun a) m ⇒ (Provenance a → Provenance a) → m b → m b Source #

runIfMonadReader (CompilationCtx uni fun a) m ⇒ m Bool → (b → m b) → b → m b Source #

runIfOptsMonadReader (CompilationCtx uni fun a) m ⇒ (b → m b) → b → m b Source #

type PLCProgram uni fun a = Program TyName Name uni fun (Provenance a) Source #

type PLCTerm uni fun a = Term TyName Name uni fun (Provenance a) Source #

type PLCType uni a = Type TyName uni (Provenance a) Source #

data PLCRecType uni fun a Source #

A possibly recursive type.

Constructors

PlainType (PLCType uni a) 
RecursiveType (RecursiveType uni fun (Provenance a)) 

getTypePLCRecType uni fun a → PLCType uni a Source #

Get the actual type inside a PLCRecType.

wrapProvenance a → PLCRecType uni fun a → [PLCType uni a] → PIRTerm uni fun a → PIRTerm uni fun a Source #

Wrap a term appropriately for a possibly recursive type.

unwrapProvenance a → PLCRecType uni fun a → PIRTerm uni fun a → PIRTerm uni fun a Source #

Unwrap a term appropriately for a possibly recursive type.

type PIRTerm uni fun a = Term TyName Name uni fun (Provenance a) Source #

type PIRType uni a = Type TyName uni (Provenance a) Source #

type Compiling m uni fun a = (Monad m, MonadReader (CompilationCtx uni fun a) m, MonadError (Error uni fun (Provenance a)) m, MonadQuote m, Ord a, AnnInline a, Typecheckable uni fun, GEq uni, PrettyUni uni, Pretty fun, Pretty a) Source #

type TermDef tyname name uni fun a = Def (VarDecl tyname name uni a) (Term tyname name uni fun a) Source #

data SharedName Source #

We generate some shared definitions compilation, this datatype defines the "keys" for those definitions.