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

UntypedPlutusCore.Core.Type

Synopsis

Documentation

type family UniOf a ∷ TypeType Source #

Extract the universe from a type.

Instances

Instances details
type UniOf (Opaque val rep) Source # 
Instance details

Defined in PlutusCore.Builtin.Polymorphism

type UniOf (Opaque val rep) = UniOf val
type UniOf (SomeConstant uni rep) Source # 
Instance details

Defined in PlutusCore.Builtin.Polymorphism

type UniOf (SomeConstant uni rep) = uni
type UniOf (CkValue uni fun) Source # 
Instance details

Defined in PlutusCore.Evaluation.Machine.Ck

type UniOf (CkValue uni fun) = uni
type UniOf (CekValue uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Evaluation.Machine.Cek.Internal

type UniOf (CekValue uni fun ann) = uni
type UniOf (Term name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Type

type UniOf (Term name uni fun ann) = uni
type UniOf (Term tyname name uni fun ann) Source # 
Instance details

Defined in PlutusCore.Core.Type

type UniOf (Term tyname name uni fun ann) = uni

data Version Source #

The version of Plutus Core used by this program.

The intention is to convey different levels of backwards compatibility for existing scripts: - Major version changes are backwards-incompatible - Minor version changes are backwards-compatible - Patch version changes should be entirely invisible (and we will likely not use this level)

The version used should be changed only when the language itself changes. For example, adding a new kind of term to the language would require a minor version bump; removing a kind of term would require a major version bump.

Similarly, changing the semantics of the language will require a version bump, typically a major one. This is the main reason why the version is actually tracked in the AST: we can have two language versions with identical ASTs but different semantics, so we need to track the version explicitly.

Compatibility is about compatibility for specific scripts, not about e.g. tools which consume scripts. Adding a new kind of term does not change how existing scripts behave, but does change what tools would need to do to process scripts.

Instances

Instances details
Generic Version Source # 
Instance details

Defined in PlutusCore.Version

Associated Types

type Rep VersionTypeType Source #

Methods

fromVersionRep Version x Source #

toRep Version x → Version Source #

Show Version Source # 
Instance details

Defined in PlutusCore.Version

NFData Version Source # 
Instance details

Defined in PlutusCore.Version

Methods

rnfVersion → () Source #

Flat Version Source # 
Instance details

Defined in PlutusCore.Flat

Eq Version Source # 
Instance details

Defined in PlutusCore.Version

Methods

(==)VersionVersionBool Source #

(/=)VersionVersionBool Source #

Ord Version Source # 
Instance details

Defined in PlutusCore.Version

Hashable Version Source # 
Instance details

Defined in PlutusCore.Version

Methods

hashWithSaltIntVersionInt Source #

hashVersionInt Source #

Pretty Version Source # 
Instance details

Defined in PlutusCore.Version

Methods

prettyVersionDoc ann Source #

prettyList ∷ [Version] → Doc ann Source #

type Rep Version Source # 
Instance details

Defined in PlutusCore.Version

type Rep Version = D1 ('MetaData "Version" "PlutusCore.Version" "plutus-core-1.36.0.0-inplace" 'False) (C1 ('MetaCons "Version" 'PrefixI 'True) (S1 ('MetaSel ('Just "_versionMajor") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Natural) :*: (S1 ('MetaSel ('Just "_versionMinor") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Natural) :*: S1 ('MetaSel ('Just "_versionPatch") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Natural))))

newtype Binder name Source #

This is a wrapper to mark the place where the binder is introduced (i.e. LamAbs/TyAbs) and not where it is actually used (TyVar/Var..). This marking allows us to skip the (de)serialization of binders at LamAbs/TyAbs positions iff name is DeBruijn-encoded (level or index). See for example the instance of Flat

Constructors

Binder 

Fields

Instances

Instances details
Functor Binder Source # 
Instance details

Defined in PlutusCore.Core.Type

Methods

fmap ∷ (a → b) → Binder a → Binder b Source #

(<$) ∷ a → Binder b → Binder a Source #

Show name ⇒ Show (Binder name) Source # 
Instance details

Defined in PlutusCore.Core.Type

Methods

showsPrecIntBinder name → ShowS Source #

showBinder name → String Source #

showList ∷ [Binder name] → ShowS Source #

Flat (Binder DeBruijn) Source # 
Instance details

Defined in PlutusCore.Flat

Flat (Binder FakeNamedDeBruijn) Source # 
Instance details

Defined in PlutusCore.Flat

Flat (Binder NamedDeBruijn) Source # 
Instance details

Defined in PlutusCore.Flat

Flat (Binder NamedTyDeBruijn) Source # 
Instance details

Defined in PlutusCore.Flat

Flat (Binder Name) Source # 
Instance details

Defined in PlutusCore.Flat

Flat (Binder TyName) Source # 
Instance details

Defined in PlutusCore.Flat

Eq name ⇒ Eq (Binder name) Source # 
Instance details

Defined in PlutusCore.Core.Type

Methods

(==)Binder name → Binder name → Bool Source #

(/=)Binder name → Binder name → Bool Source #

data Term name uni fun ann Source #

The type of Untyped Plutus Core terms. Mirrors the type of Typed Plutus Core terms except

  1. all types are removed
  2. IWrap and Unwrap are removed
  3. type abstractions are replaced with Delay
  4. type instantiations are replaced with Force

The latter two are due to the fact that we don't have value restriction in Typed Plutus Core and hence a computation can be stuck expecting only a single type argument for the computation to become unstuck. Therefore we can't just silently remove type abstractions and instantiations and need to replace them with something else that also blocks evaluation (in order for the semantics of an erased program to match with the semantics of the original typed one). Delay and Force serve exactly this purpose.

Constructors

Var !ann !name 
LamAbs !ann !name !(Term name uni fun ann) 
Apply !ann !(Term name uni fun ann) !(Term name uni fun ann) 
Force !ann !(Term name uni fun ann) 
Delay !ann !(Term name uni fun ann) 
Constant !ann !(Some (ValueOf uni)) 
Builtin !ann !fun 
Error !ann 
Constr !ann !Word64 ![Term name uni fun ann] 
Case !ann !(Term name uni fun ann) !(Vector (Term name uni fun ann)) 

Instances

Instances details
DefaultPrettyPlcStrategy (Term name uni fun ann) ⇒ PrettyBy PrettyConfigPlc (Term name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Pretty.Plc

Methods

prettyByPrettyConfigPlcTerm name uni fun ann → Doc ann0 Source #

prettyListByPrettyConfigPlc → [Term name uni fun ann] → Doc ann0 Source #

(PrettyClassicBy configName name, PrettyUni uni, Pretty fun, Pretty ann) ⇒ PrettyBy (PrettyConfigClassic configName) (Term name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Pretty.Classic

Methods

prettyByPrettyConfigClassic configName → Term name uni fun ann → Doc ann0 Source #

prettyListByPrettyConfigClassic configName → [Term name uni fun ann] → Doc ann0 Source #

(PrettyReadableBy configName name, PrettyUni uni, Pretty fun, Show configName) ⇒ PrettyBy (PrettyConfigReadable configName) (Term name uni fun a) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Pretty.Readable

Methods

prettyByPrettyConfigReadable configName → Term name uni fun a → Doc ann Source #

prettyListByPrettyConfigReadable configName → [Term name uni fun a] → Doc ann Source #

Functor (Term name uni fun) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Type

Methods

fmap ∷ (a → b) → Term name uni fun a → Term name uni fun b Source #

(<$) ∷ a → Term name uni fun b → Term name uni fun a Source #

TermLike (Term name uni fun) TyName name uni fun Source # 
Instance details

Defined in UntypedPlutusCore.Core.Type

Methods

var ∷ ann → name → Term name uni fun ann Source #

tyAbs ∷ ann → TyNameKind ann → Term name uni fun ann → Term name uni fun ann Source #

lamAbs ∷ ann → name → Type TyName uni ann → Term name uni fun ann → Term name uni fun ann Source #

apply ∷ ann → Term name uni fun ann → Term name uni fun ann → Term name uni fun ann Source #

constant ∷ ann → Some (ValueOf uni) → Term name uni fun ann Source #

builtin ∷ ann → fun → Term name uni fun ann Source #

tyInst ∷ ann → Term name uni fun ann → Type TyName uni ann → Term name uni fun ann Source #

unwrap ∷ ann → Term name uni fun ann → Term name uni fun ann Source #

iWrap ∷ ann → Type TyName uni ann → Type TyName uni ann → Term name uni fun ann → Term name uni fun ann Source #

error ∷ ann → Type TyName uni ann → Term name uni fun ann Source #

constr ∷ ann → Type TyName uni ann → Word64 → [Term name uni fun ann] → Term name uni fun ann Source #

kase ∷ ann → Type TyName uni ann → Term name uni fun ann → [Term name uni fun ann] → Term name uni fun ann Source #

termLet ∷ ann → TermDef (Term name uni fun) TyName name uni ann → Term name uni fun ann → Term name uni fun ann Source #

typeLet ∷ ann → TypeDef TyName uni ann → Term name uni fun ann → Term name uni fun ann Source #

ThrowableBuiltins uni fun ⇒ MonadError (CekEvaluationException NamedDeBruijn uni fun) (CekM uni fun s) Source # 
Instance details

Defined in UntypedPlutusCore.Evaluation.Machine.Cek.Internal

Methods

throwErrorCekEvaluationException NamedDeBruijn uni fun → CekM uni fun s a Source #

catchErrorCekM uni fun s a → (CekEvaluationException NamedDeBruijn uni fun → CekM uni fun s a) → CekM uni fun s a Source #

Generic (Term name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Type

Associated Types

type Rep (Term name uni fun ann) ∷ TypeType Source #

Methods

fromTerm name uni fun ann → Rep (Term name uni fun ann) x Source #

toRep (Term name uni fun ann) x → Term name uni fun ann Source #

(Show name, GShow uni, Everywhere uni Show, Show fun, Show ann, Closed uni) ⇒ Show (Term name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Type

Methods

showsPrecIntTerm name uni fun ann → ShowS Source #

showTerm name uni fun ann → String Source #

showList ∷ [Term name uni fun ann] → ShowS Source #

(NFData name, NFData fun, NFData ann, Everywhere uni NFData, Closed uni) ⇒ NFData (Term name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Type

Methods

rnfTerm name uni fun ann → () Source #

(GEq uni, Closed uni, Everywhere uni Eq, Eq fun, Eq ann) ⇒ Eq (Term DeBruijn uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Eq

Methods

(==)Term DeBruijn uni fun ann → Term DeBruijn uni fun ann → Bool Source #

(/=)Term DeBruijn uni fun ann → Term DeBruijn uni fun ann → Bool Source #

(GEq uni, Closed uni, Everywhere uni Eq, Eq fun, Eq ann) ⇒ Eq (Term FakeNamedDeBruijn uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Eq

Methods

(==)Term FakeNamedDeBruijn uni fun ann → Term FakeNamedDeBruijn uni fun ann → Bool Source #

(/=)Term FakeNamedDeBruijn uni fun ann → Term FakeNamedDeBruijn uni fun ann → Bool Source #

(GEq uni, Closed uni, Everywhere uni Eq, Eq fun, Eq ann) ⇒ Eq (Term NamedDeBruijn uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Eq

Methods

(==)Term NamedDeBruijn uni fun ann → Term NamedDeBruijn uni fun ann → Bool Source #

(/=)Term NamedDeBruijn uni fun ann → Term NamedDeBruijn uni fun ann → Bool Source #

(GEq uni, Closed uni, Everywhere uni Eq, Eq fun, Eq ann) ⇒ Eq (Term Name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Eq

Methods

(==)Term Name uni fun ann → Term Name uni fun ann → Bool Source #

(/=)Term Name uni fun ann → Term Name uni fun ann → Bool Source #

HashableTermConstraints uni fun ann ⇒ Hashable (Term DeBruijn uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Eq

Methods

hashWithSaltIntTerm DeBruijn uni fun ann → Int Source #

hashTerm DeBruijn uni fun ann → Int Source #

HashableTermConstraints uni fun ann ⇒ Hashable (Term FakeNamedDeBruijn uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Eq

Methods

hashWithSaltIntTerm FakeNamedDeBruijn uni fun ann → Int Source #

hashTerm FakeNamedDeBruijn uni fun ann → Int Source #

HashableTermConstraints uni fun ann ⇒ Hashable (Term NamedDeBruijn uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Eq

Methods

hashWithSaltIntTerm NamedDeBruijn uni fun ann → Int Source #

hashTerm NamedDeBruijn uni fun ann → Int Source #

HashableTermConstraints uni fun ann ⇒ Hashable (Term Name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Eq

Methods

hashWithSaltIntTerm Name uni fun ann → Int Source #

hashTerm Name uni fun ann → Int Source #

HasConstant (Term name uni fun ()) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Type

Methods

asConstantTerm name uni fun () → Either BuiltinError (Some (ValueOf (UniOf (Term name uni fun ())))) Source #

fromConstantSome (ValueOf (UniOf (Term name uni fun ()))) → Term name uni fun () Source #

HasUniques (Term name uni fun ann) ⇒ Rename (Term name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Rename

Methods

renameMonadQuote m ⇒ Term name uni fun ann → m (Term name uni fun ann) Source #

(PrettyClassic name, PrettyUni uni, Pretty fun, Pretty ann) ⇒ Pretty (Term name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Pretty.Default

Methods

prettyTerm name uni fun ann → Doc ann0 Source #

prettyList ∷ [Term name uni fun ann] → Doc ann0 Source #

type Rep (Term name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Type

type Rep (Term name uni fun ann) = D1 ('MetaData "Term" "UntypedPlutusCore.Core.Type" "plutus-core-1.36.0.0-inplace" 'False) (((C1 ('MetaCons "Var" 'PrefixI 'False) (S1 ('MetaSel ('NothingMaybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ann) :*: S1 ('MetaSel ('NothingMaybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 name)) :+: C1 ('MetaCons "LamAbs" 'PrefixI 'False) (S1 ('MetaSel ('NothingMaybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ann) :*: (S1 ('MetaSel ('NothingMaybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 name) :*: S1 ('MetaSel ('NothingMaybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Term name uni fun ann))))) :+: (C1 ('MetaCons "Apply" 'PrefixI 'False) (S1 ('MetaSel ('NothingMaybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ann) :*: (S1 ('MetaSel ('NothingMaybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Term name uni fun ann)) :*: S1 ('MetaSel ('NothingMaybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Term name uni fun ann)))) :+: (C1 ('MetaCons "Force" 'PrefixI 'False) (S1 ('MetaSel ('NothingMaybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ann) :*: S1 ('MetaSel ('NothingMaybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Term name uni fun ann))) :+: C1 ('MetaCons "Delay" 'PrefixI 'False) (S1 ('MetaSel ('NothingMaybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ann) :*: S1 ('MetaSel ('NothingMaybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Term name uni fun ann)))))) :+: ((C1 ('MetaCons "Constant" 'PrefixI 'False) (S1 ('MetaSel ('NothingMaybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ann) :*: S1 ('MetaSel ('NothingMaybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Some (ValueOf uni)))) :+: C1 ('MetaCons "Builtin" 'PrefixI 'False) (S1 ('MetaSel ('NothingMaybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ann) :*: S1 ('MetaSel ('NothingMaybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 fun))) :+: (C1 ('MetaCons "Error" 'PrefixI 'False) (S1 ('MetaSel ('NothingMaybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ann)) :+: (C1 ('MetaCons "Constr" 'PrefixI 'False) (S1 ('MetaSel ('NothingMaybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ann) :*: (S1 ('MetaSel ('NothingMaybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word64) :*: S1 ('MetaSel ('NothingMaybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [Term name uni fun ann]))) :+: C1 ('MetaCons "Case" 'PrefixI 'False) (S1 ('MetaSel ('NothingMaybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ann) :*: (S1 ('MetaSel ('NothingMaybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Term name uni fun ann)) :*: S1 ('MetaSel ('NothingMaybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Vector (Term name uni fun ann)))))))))
type HasUniques (Term name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Type

type HasUniques (Term name uni fun ann) = HasUnique name TermUnique
type UniOf (Term name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Type

type UniOf (Term name uni fun ann) = uni

data Program name uni fun ann Source #

A Program is simply a Term coupled with a Version of the core language.

Constructors

Program 

Fields

Instances

Instances details
DefaultPrettyPlcStrategy (Program name uni fun ann) ⇒ PrettyBy PrettyConfigPlc (Program name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Pretty.Plc

Methods

prettyByPrettyConfigPlcProgram name uni fun ann → Doc ann0 Source #

prettyListByPrettyConfigPlc → [Program name uni fun ann] → Doc ann0 Source #

(PrettyClassicBy configName (Term name uni fun ann), Pretty ann) ⇒ PrettyBy (PrettyConfigClassic configName) (Program name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Pretty.Classic

Methods

prettyByPrettyConfigClassic configName → Program name uni fun ann → Doc ann0 Source #

prettyListByPrettyConfigClassic configName → [Program name uni fun ann] → Doc ann0 Source #

PrettyReadableBy configName (Term name uni fun a) ⇒ PrettyBy (PrettyConfigReadable configName) (Program name uni fun a) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Pretty.Readable

Methods

prettyByPrettyConfigReadable configName → Program name uni fun a → Doc ann Source #

prettyListByPrettyConfigReadable configName → [Program name uni fun a] → Doc ann Source #

Functor (Program name uni fun) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Type

Methods

fmap ∷ (a → b) → Program name uni fun a → Program name uni fun b Source #

(<$) ∷ a → Program name uni fun b → Program name uni fun a Source #

Generic (Program name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Type

Associated Types

type Rep (Program name uni fun ann) ∷ TypeType Source #

Methods

fromProgram name uni fun ann → Rep (Program name uni fun ann) x Source #

toRep (Program name uni fun ann) x → Program name uni fun ann Source #

(Show name, GShow uni, Everywhere uni Show, Show fun, Show ann, Closed uni) ⇒ Show (Program name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Type

Methods

showsPrecIntProgram name uni fun ann → ShowS Source #

showProgram name uni fun ann → String Source #

showList ∷ [Program name uni fun ann] → ShowS Source #

(NFData name, Everywhere uni NFData, NFData fun, NFData ann, Closed uni) ⇒ NFData (Program name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Type

Methods

rnfProgram name uni fun ann → () Source #

(GEq uni, Closed uni, Everywhere uni Eq, Eq fun, Eq ann, Eq (Term name uni fun ann)) ⇒ Eq (Program name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Eq

Methods

(==)Program name uni fun ann → Program name uni fun ann → Bool Source #

(/=)Program name uni fun ann → Program name uni fun ann → Bool Source #

HasUniques (Program name uni fun ann) ⇒ Rename (Program name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Rename

Methods

renameMonadQuote m ⇒ Program name uni fun ann → m (Program name uni fun ann) Source #

(PrettyClassic name, PrettyUni uni, Pretty fun, Pretty ann) ⇒ Pretty (Program name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Pretty.Default

Methods

prettyProgram name uni fun ann → Doc ann0 Source #

prettyList ∷ [Program name uni fun ann] → Doc ann0 Source #

type Rep (Program name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Type

type Rep (Program name uni fun ann) = D1 ('MetaData "Program" "UntypedPlutusCore.Core.Type" "plutus-core-1.36.0.0-inplace" 'False) (C1 ('MetaCons "Program" 'PrefixI 'True) (S1 ('MetaSel ('Just "_progAnn") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ann) :*: (S1 ('MetaSel ('Just "_progVer") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Version) :*: S1 ('MetaSel ('Just "_progTerm") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Term name uni fun ann)))))
type HasUniques (Program name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Type

type HasUniques (Program name uni fun ann) = HasUniques (Term name uni fun ann)

progAnn ∷ ∀ name uni fun ann. Lens' (Program name uni fun ann) ann Source #

progVer ∷ ∀ name uni fun ann. Lens' (Program name uni fun ann) Version Source #

progTerm ∷ ∀ name uni fun ann name uni fun. Lens (Program name uni fun ann) (Program name uni fun ann) (Term name uni fun ann) (Term name uni fun ann) Source #

bindFunMMonad m ⇒ (ann → fun → m (Term name uni fun' ann)) → Term name uni fun ann → m (Term name uni fun' ann) Source #

bindFun ∷ (ann → fun → Term name uni fun' ann) → Term name uni fun ann → Term name uni fun' ann Source #

mapFun ∷ (ann → fun → fun') → Term name uni fun ann → Term name uni fun' ann Source #

termAnnTerm name uni fun ann → ann Source #

Return the outermost annotation of a Term.

data UVarDecl name ann Source #

An untyped "variable declaration", i.e. a name for a variable.

Constructors

UVarDecl 

Fields

Instances

Instances details
Functor (UVarDecl name) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Type

Methods

fmap ∷ (a → b) → UVarDecl name a → UVarDecl name b Source #

(<$) ∷ a → UVarDecl name b → UVarDecl name a Source #

Generic (UVarDecl name ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Type

Associated Types

type Rep (UVarDecl name ann) ∷ TypeType Source #

Methods

fromUVarDecl name ann → Rep (UVarDecl name ann) x Source #

toRep (UVarDecl name ann) x → UVarDecl name ann Source #

(Show ann, Show name) ⇒ Show (UVarDecl name ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Type

Methods

showsPrecIntUVarDecl name ann → ShowS Source #

showUVarDecl name ann → String Source #

showList ∷ [UVarDecl name ann] → ShowS Source #

type Rep (UVarDecl name ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Type

type Rep (UVarDecl name ann) = D1 ('MetaData "UVarDecl" "UntypedPlutusCore.Core.Type" "plutus-core-1.36.0.0-inplace" 'False) (C1 ('MetaCons "UVarDecl" 'PrefixI 'True) (S1 ('MetaSel ('Just "_uvarDeclAnn") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ann) :*: S1 ('MetaSel ('Just "_uvarDeclName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 name)))

uvarDeclName ∷ ∀ name ann name. Lens (UVarDecl name ann) (UVarDecl name ann) name name Source #

uvarDeclAnn ∷ ∀ name ann ann. Lens (UVarDecl name ann) (UVarDecl name ann) ann ann Source #