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

PlutusIR

Contents

Synopsis

AST

class HasAnn (f ∷ Type → Type) where Source #

Types that have an outermost annotation.

Minimal complete definition

getAnn, modifyAnn

Methods

getAnn ∷ f a → a Source #

Get the outermost annotation.

modifyAnn ∷ (a → a) → f a → f a Source #

Modify the outermost annotation.

setAnn ∷ a → f a → f a Source #

Set the outermost annotation.

Instances

Instances details
HasAnn (Type tyname uni) 
Instance details

Defined in PlutusCore.Core.Type

Methods

getAnn ∷ Type tyname uni a → a Source #

modifyAnn ∷ (a → a) → Type tyname uni a → Type tyname uni a Source #

setAnn ∷ a → Type tyname uni a → Type tyname uni a Source #

HasAnn (Term tyname name uni fun) 
Instance details

Defined in PlutusCore.Core.Type

Methods

getAnn ∷ Term tyname name uni fun a → a Source #

modifyAnn ∷ (a → a) → Term tyname name uni fun a → Term tyname name uni fun a Source #

setAnn ∷ a → Term tyname name uni fun a → Term tyname name uni fun a Source #

HasAnn (Binding tyname name uni fun) Source # 
Instance details

Defined in PlutusIR.Core.Type

Methods

getAnn ∷ Binding tyname name uni fun a → a Source #

modifyAnn ∷ (a → a) → Binding tyname name uni fun a → Binding tyname name uni fun a Source #

setAnn ∷ a → Binding tyname name uni fun a → Binding tyname name uni fun a Source #

HasAnn (Term tyname name uni fun) Source # 
Instance details

Defined in PlutusIR.Core.Type

Methods

getAnn ∷ Term tyname name uni fun a → a Source #

modifyAnn ∷ (a → a) → Term tyname name uni fun a → Term tyname name uni fun a Source #

setAnn ∷ a → Term tyname name uni fun a → Term tyname name uni fun a Source #

data Term tyname name uni fun a Source #

Constructors

Let a Recursivity (NonEmpty (Binding tyname name uni fun a)) (Term tyname name uni fun a) 
Var a name 
TyAbs a tyname (Kind a) (Term tyname name uni fun a) 
LamAbs a name (Type tyname uni a) (Term tyname name uni fun a) 
Apply a (Term tyname name uni fun a) (Term tyname name uni fun a) 
Constant a (Some (ValueOf uni)) 
Builtin a fun 
TyInst a (Term tyname name uni fun a) (Type tyname uni a) 
Error a (Type tyname uni a) 
IWrap a (Type tyname uni a) (Type tyname uni a) (Term tyname name uni fun a) 
Unwrap a (Term tyname name uni fun a) 
Constr a (Type tyname uni a) Word64 [Term tyname name uni fun a] 
Case a (Type tyname uni a) (Term tyname name uni fun a) [Term tyname name uni fun a] 

Instances

Instances details
name ~ Name ⇒ Reference Name (Term tyname name uni fun) Source # 
Instance details

Defined in PlutusIR.Core.Instance.Scoping

Methods

referenceVia ∷ (∀ name0. ToScopedName name0 ⇒ name0 → NameAnn) → Name → Term tyname name uni fun NameAnn → Term tyname name uni fun NameAnn Source #

tyname ~ TyName ⇒ Reference TyName (Term tyname name uni fun) Source # 
Instance details

Defined in PlutusIR.Core.Instance.Scoping

Methods

referenceVia ∷ (∀ name0. ToScopedName name0 ⇒ name0 → NameAnn) → TyName → Term tyname name uni fun NameAnn → Term tyname name uni fun NameAnn Source #

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

Defined in PlutusIR.Core.Instance.Pretty

Methods

prettyBy ∷ PrettyConfigPlc → Term tyname name uni fun ann → Doc ann0 Source #

prettyListBy ∷ PrettyConfigPlc → [Term tyname name uni fun ann] → Doc ann0 Source #

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

Defined in PlutusIR.Core.Instance.Pretty

Methods

prettyBy ∷ PrettyConfigClassic configName → Term tyname name uni fun ann → Doc ann0 Source #

prettyListBy ∷ PrettyConfigClassic configName → [Term tyname name uni fun ann] → Doc ann0 Source #

(PrettyConstraints configName tyname name uni, Pretty fun) ⇒ PrettyBy (PrettyConfigReadable configName) (Term tyname name uni fun a) Source # 
Instance details

Defined in PlutusIR.Core.Instance.Pretty.Readable

Methods

prettyBy ∷ PrettyConfigReadable configName → Term tyname name uni fun a → Doc ann Source #

prettyListBy ∷ PrettyConfigReadable configName → [Term tyname name uni fun a] → Doc ann Source #

Functor (Term tyname name uni fun) Source # 
Instance details

Defined in PlutusIR.Core.Type

Methods

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

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

(tyname ~ TyName, name ~ Name) ⇒ CollectScopeInfo (Term tyname name uni fun) Source # 
Instance details

Defined in PlutusIR.Core.Instance.Scoping

Methods

collectScopeInfo ∷ Term tyname name uni fun NameAnn → ScopeErrorOrInfo Source #

(tyname ~ TyName, name ~ Name) ⇒ EstablishScoping (Term tyname name uni fun) Source # 
Instance details

Defined in PlutusIR.Core.Instance.Scoping

Methods

establishScoping ∷ Term tyname name uni fun ann → Quote (Term tyname name uni fun NameAnn) Source #

HasAnn (Term tyname name uni fun) Source # 
Instance details

Defined in PlutusIR.Core.Type

Methods

getAnn ∷ Term tyname name uni fun a → a Source #

modifyAnn ∷ (a → a) → Term tyname name uni fun a → Term tyname name uni fun a Source #

setAnn ∷ a → Term tyname name uni fun a → Term tyname name uni fun a Source #

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

Defined in PlutusIR.Core.Type

Methods

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

tyAbs ∷ ann → tyname → Kind ann → Term tyname name uni fun ann → Term tyname name uni fun ann Source #

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

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

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

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

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

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

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

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

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

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

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

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

Generic (Term tyname name uni fun a) Source # 
Instance details

Defined in PlutusIR.Core.Type

Associated Types

type Rep (Term tyname name uni fun a) ∷ Type → Type Source #

Methods

from ∷ Term tyname name uni fun a → Rep (Term tyname name uni fun a) x Source #

to ∷ Rep (Term tyname name uni fun a) x → Term tyname name uni fun a Source #

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

Defined in PlutusIR.Core.Type

Methods

showsPrec ∷ Int → Term tyname name uni fun a → ShowS Source #

show ∷ Term tyname name uni fun a → String Source #

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

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

Defined in PlutusIR.Core.Type

Methods

asConstant ∷ Term tyname name uni fun () → Either BuiltinError (Some (ValueOf (UniOf (Term tyname name uni fun ())))) Source #

fromConstant ∷ Some (ValueOf (UniOf (Term tyname name uni fun ()))) → Term tyname name uni fun () Source #

ExMemoryUsage (Term tyname name uni fun ann) Source # 
Instance details

Defined in PlutusIR.Core.Type

Methods

memoryUsage ∷ Term tyname name uni fun ann → CostRose Source #

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

Defined in PlutusIR.Transform.Rename

Methods

rename ∷ MonadQuote m ⇒ Term tyname name uni fun ann → m (Term tyname name uni fun ann) Source #

(Closed uni, Everywhere uni Flat, Flat fun, Flat a, Flat tyname, Flat name) ⇒ Flat (Term tyname name uni fun a) Source # 
Instance details

Defined in PlutusIR.Core.Instance.Flat

Methods

encode ∷ Term tyname name uni fun a → Encoding Source #

decode ∷ Get (Term tyname name uni fun a) Source #

size ∷ Term tyname name uni fun a → NumBits → NumBits Source #

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

Defined in PlutusIR.Core.Instance.Pretty

Methods

pretty ∷ Term tyname name uni fun ann → Doc ann0 Source #

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

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

Defined in PlutusIR.Core.Type

type Rep (Term tyname name uni fun a) = D1 ('MetaData "Term" "PlutusIR.Core.Type" "plutus-core-1.69.0.0-inplace-plutus-ir" 'False) (((C1 ('MetaCons "Let" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Recursivity)) :*: (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty (Binding tyname name uni fun a))) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Term tyname name uni fun a)))) :+: (C1 ('MetaCons "Var" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 name)) :+: C1 ('MetaCons "TyAbs" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 tyname)) :*: (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Kind a)) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Term tyname name uni fun a)))))) :+: (C1 ('MetaCons "LamAbs" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 name)) :*: (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type tyname uni a)) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Term tyname name uni fun a)))) :+: (C1 ('MetaCons "Apply" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Term tyname name uni fun a)) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Term tyname name uni fun a)))) :+: C1 ('MetaCons "Constant" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Some (ValueOf uni))))))) :+: ((C1 ('MetaCons "Builtin" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 fun)) :+: (C1 ('MetaCons "TyInst" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Term tyname name uni fun a)) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type tyname uni a)))) :+: C1 ('MetaCons "Error" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type tyname uni a))))) :+: ((C1 ('MetaCons "IWrap" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type tyname uni a))) :*: (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type tyname uni a)) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Term tyname name uni fun a)))) :+: C1 ('MetaCons "Unwrap" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Term tyname name uni fun a)))) :+: (C1 ('MetaCons "Constr" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type tyname uni a))) :*: (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word64) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Term tyname name uni fun a]))) :+: C1 ('MetaCons "Case" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type tyname uni a))) :*: (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Term tyname name uni fun a)) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Term tyname name uni fun a])))))))
type HasUniques (Term tyname name uni fun ann) Source # 
Instance details

Defined in PlutusIR.Core.Type

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

Defined in PlutusIR.Core.Type

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

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

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

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

termSubterms ∷ Traversal' (Term tyname name uni fun a) (Term tyname name uni fun a) Source #

Get all the direct child Terms of the given Term, including those within Bindings.

termSubtypes ∷ Traversal' (Term tyname name uni fun a) (Type tyname uni a) Source #

Get all the direct child Kinds of the given Term, including those within Bindings.

termBindings ∷ Traversal' (Term tyname name uni fun a) (Binding tyname name uni fun a) Source #

Get all the direct child Bindings of the given Term.

data Type tyname (uni ∷ Type → Type) ann Source #

A Kind assigned to expressions.

Constructors

TyVar ann tyname

Type variable

TyFun ann (Type tyname uni ann) (Type tyname uni ann)

Function type

TyIFix ann (Type tyname uni ann) (Type tyname uni ann)

Fix-point type, for constructing self-recursive types

TyForall ann tyname (Kind ann) (Type tyname uni ann)

Polymorphic type

TyBuiltin ann (SomeTypeIn uni)

Builtin type

TyLam ann tyname (Kind ann) (Type tyname uni ann)

Type lambda

TyApp ann (Type tyname uni ann) (Type tyname uni ann)

Type application

TySOP ann [[Type tyname uni ann]]

Sum-of-products type

Instances

Instances details
Functor (Type tyname uni) 
Instance details

Defined in PlutusCore.Core.Type

Methods

fmap ∷ (a → b) → Type tyname uni a → Type tyname uni b Source #

(<$) ∷ a → Type tyname uni b → Type tyname uni a Source #

HasAnn (Type tyname uni) 
Instance details

Defined in PlutusCore.Core.Type

Methods

getAnn ∷ Type tyname uni a → a Source #

modifyAnn ∷ (a → a) → Type tyname uni a → Type tyname uni a Source #

setAnn ∷ a → Type tyname uni a → Type tyname uni a Source #

Generic (Type tyname uni ann) 
Instance details

Defined in PlutusCore.Core.Type

Associated Types

type Rep (Type tyname uni ann) ∷ Type → Type Source #

Methods

from ∷ Type tyname uni ann → Rep (Type tyname uni ann) x Source #

to ∷ Rep (Type tyname uni ann) x → Type tyname uni ann Source #

(GShow uni, Show tyname, Show ann) ⇒ Show (Type tyname uni ann) 
Instance details

Defined in PlutusCore.Core.Type

Methods

showsPrec ∷ Int → Type tyname uni ann → ShowS Source #

show ∷ Type tyname uni ann → String Source #

showList ∷ [Type tyname uni ann] → ShowS Source #

(NFData ann, NFData tyname, Closed uni) ⇒ NFData (Type tyname uni ann) 
Instance details

Defined in PlutusCore.Core.Type

Methods

rnf ∷ Type tyname uni ann → () Source #

HasUniques (Type tyname uni ann) ⇒ Rename (Type tyname uni ann) 
Instance details

Defined in PlutusCore.Rename

Methods

rename ∷ MonadQuote m ⇒ Type tyname uni ann → m (Type tyname uni ann) Source #

type Rep (Type tyname uni ann) 
Instance details

Defined in PlutusCore.Core.Type

type Rep (Type tyname uni ann) = D1 ('MetaData "Type" "PlutusCore.Core.Type" "plutus-core-1.69.0.0-inplace" 'False) (((C1 ('MetaCons "TyVar" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ann) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 tyname)) :+: C1 ('MetaCons "TyFun" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ann) :*: (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type tyname uni ann)) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type tyname uni ann))))) :+: (C1 ('MetaCons "TyIFix" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ann) :*: (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type tyname uni ann)) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type tyname uni ann)))) :+: C1 ('MetaCons "TyForall" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ann) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 tyname)) :*: (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Kind ann)) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type tyname uni ann)))))) :+: ((C1 ('MetaCons "TyBuiltin" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ann) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (SomeTypeIn uni))) :+: C1 ('MetaCons "TyLam" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ann) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 tyname)) :*: (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Kind ann)) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type tyname uni ann))))) :+: (C1 ('MetaCons "TyApp" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ann) :*: (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type tyname uni ann)) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type tyname uni ann)))) :+: C1 ('MetaCons "TySOP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ann) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [[Type tyname uni ann]])))))
type HasUniques (Type tyname uni ann) 
Instance details

Defined in PlutusCore.Core.Type

type HasUniques (Type tyname uni ann) = HasUnique tyname TypeUnique

typeSubtypes ∷ ∀ tyname (uni ∷ Type → Type) ann f. Applicative f ⇒ (Type tyname uni ann → f (Type tyname uni ann)) → Type tyname uni ann → f (Type tyname uni ann) Source #

Get all the direct child Kinds of the given Kind.

data Datatype tyname name uni a Source #

Constructors

Datatype a (TyVarDecl tyname a) [TyVarDecl tyname a] name [VarDecl tyname name uni a] 

Instances

Instances details
tyname ~ TyName ⇒ Reference TyName (Datatype tyname name uni) Source #

Scoping for data types is hard, so we employ some extra paranoia and reference the provided TyName in the type of every single constructor, and also apply the final head to that TyName.

Instance details

Defined in PlutusIR.Core.Instance.Scoping

Methods

referenceVia ∷ (∀ name0. ToScopedName name0 ⇒ name0 → NameAnn) → TyName → Datatype tyname name uni NameAnn → Datatype tyname name uni NameAnn Source #

(PrettyClassicBy configName tyname, PrettyClassicBy configName name, PrettyParens (SomeTypeIn uni), Pretty ann) ⇒ PrettyBy (PrettyConfigClassic configName) (Datatype tyname name uni ann) Source # 
Instance details

Defined in PlutusIR.Core.Instance.Pretty

Methods

prettyBy ∷ PrettyConfigClassic configName → Datatype tyname name uni ann → Doc ann0 Source #

prettyListBy ∷ PrettyConfigClassic configName → [Datatype tyname name uni ann] → Doc ann0 Source #

PrettyConstraints configName tyname name uni ⇒ PrettyBy (PrettyConfigReadable configName) (Datatype tyname name uni ann) Source # 
Instance details

Defined in PlutusIR.Core.Instance.Pretty.Readable

Methods

prettyBy ∷ PrettyConfigReadable configName → Datatype tyname name uni ann → Doc ann0 Source #

prettyListBy ∷ PrettyConfigReadable configName → [Datatype tyname name uni ann] → Doc ann0 Source #

Functor (Datatype tyname name uni) Source # 
Instance details

Defined in PlutusIR.Core.Type

Methods

fmap ∷ (a → b) → Datatype tyname name uni a → Datatype tyname name uni b Source #

(<$) ∷ a → Datatype tyname name uni b → Datatype tyname name uni a Source #

(tyname ~ TyName, name ~ Name) ⇒ CollectScopeInfo (Datatype tyname name uni) Source # 
Instance details

Defined in PlutusIR.Core.Instance.Scoping

Methods

collectScopeInfo ∷ Datatype tyname name uni NameAnn → ScopeErrorOrInfo Source #

Generic (Datatype tyname name uni a) Source # 
Instance details

Defined in PlutusIR.Core.Type

Associated Types

type Rep (Datatype tyname name uni a) ∷ Type → Type Source #

Methods

from ∷ Datatype tyname name uni a → Rep (Datatype tyname name uni a) x Source #

to ∷ Rep (Datatype tyname name uni a) x → Datatype tyname name uni a Source #

(Show a, Show tyname, Show name, GShow uni) ⇒ Show (Datatype tyname name uni a) Source # 
Instance details

Defined in PlutusIR.Core.Type

Methods

showsPrec ∷ Int → Datatype tyname name uni a → ShowS Source #

show ∷ Datatype tyname name uni a → String Source #

showList ∷ [Datatype tyname name uni a] → ShowS Source #

(Closed uni, Everywhere uni Flat, Flat a, Flat tyname, Flat name) ⇒ Flat (Datatype tyname name uni a) Source # 
Instance details

Defined in PlutusIR.Core.Instance.Flat

Methods

encode ∷ Datatype tyname name uni a → Encoding Source #

decode ∷ Get (Datatype tyname name uni a) Source #

size ∷ Datatype tyname name uni a → NumBits → NumBits Source #

(PrettyClassic tyname, PrettyClassic name, PrettyUni uni, Pretty ann) ⇒ Pretty (Datatype tyname name uni ann) Source # 
Instance details

Defined in PlutusIR.Core.Instance.Pretty

Methods

pretty ∷ Datatype tyname name uni ann → Doc ann0 Source #

prettyList ∷ [Datatype tyname name uni ann] → Doc ann0 Source #

(Reference TyName t, Reference Name t) ⇒ Reference (Datatype TyName Name uni ann) t Source # 
Instance details

Defined in PlutusIR.Core.Instance.Scoping

Methods

referenceVia ∷ (∀ name. ToScopedName name ⇒ name → NameAnn) → Datatype TyName Name uni ann → t NameAnn → t NameAnn Source #

type Rep (Datatype tyname name uni a) Source # 
Instance details

Defined in PlutusIR.Core.Type

datatypeSubtypes ∷ Traversal' (Datatype tyname name uni a) (Type tyname uni a) Source #

Get all the direct child Kinds of the given Datatype.

data Kind ann Source #

Constructors

Type ann 
KindArrow ann (Kind ann) (Kind ann) 

Instances

Instances details
Functor Kind 
Instance details

Defined in PlutusCore.Core.Type

Methods

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

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

Lift ann ⇒ Lift (Kind ann ∷ Type) 
Instance details

Defined in PlutusCore.Core.Type

Methods

lift ∷ Quote m ⇒ Kind ann → m Exp Source #

liftTyped ∷ ∀ (m ∷ Type → Type). Quote m ⇒ Kind ann → Code m (Kind ann) Source #

Generic (Kind ann) 
Instance details

Defined in PlutusCore.Core.Type

Associated Types

type Rep (Kind ann) ∷ Type → Type Source #

Methods

from ∷ Kind ann → Rep (Kind ann) x Source #

to ∷ Rep (Kind ann) x → Kind ann Source #

Show ann ⇒ Show (Kind ann) 
Instance details

Defined in PlutusCore.Core.Type

Methods

showsPrec ∷ Int → Kind ann → ShowS Source #

show ∷ Kind ann → String Source #

showList ∷ [Kind ann] → ShowS Source #

NFData ann ⇒ NFData (Kind ann) 
Instance details

Defined in PlutusCore.Core.Type

Methods

rnf ∷ Kind ann → () Source #

Eq ann ⇒ Eq (Kind ann) 
Instance details

Defined in PlutusCore.Core.Type

Methods

(==) ∷ Kind ann → Kind ann → Bool Source #

(/=) ∷ Kind ann → Kind ann → Bool Source #

Hashable ann ⇒ Hashable (Kind ann) 
Instance details

Defined in PlutusCore.Core.Type

Methods

hashWithSalt ∷ Int → Kind ann → Int Source #

hash ∷ Kind ann → Int Source #

type Rep (Kind ann) 
Instance details

Defined in PlutusCore.Core.Type

type HasUniques (Kind ann) 
Instance details

Defined in PlutusCore.Core.Type

type HasUniques (Kind ann) = ()

data Recursivity Source #

Each multi-let-group has to be marked with its scoping: * NonRec: the identifiers introduced by this multi-let are only linearly-scoped, i.e. an identifier cannot refer to itself or later-introduced identifiers of the group. * Rec: an identifiers introduced by this multi-let group can use all other multi-lets of the same group (including itself), thus permitting (mutual) recursion.

Constructors

NonRec 
Rec 

Instances

Instances details
Semigroup Recursivity Source #

Recursivity can form a Semigroup / lattice, where NonRec < Rec. The lattice is ordered by "power": a non-recursive binding group can be made recursive and it will still work, but not vice versa. The semigroup operation is the "join" of the lattice.

Instance details

Defined in PlutusIR.Core.Type

Generic Recursivity Source # 
Instance details

Defined in PlutusIR.Core.Type

Associated Types

type Rep Recursivity ∷ Type → Type Source #

Show Recursivity Source # 
Instance details

Defined in PlutusIR.Core.Type

Eq Recursivity Source # 
Instance details

Defined in PlutusIR.Core.Type

Ord Recursivity Source # 
Instance details

Defined in PlutusIR.Core.Type

Hashable Recursivity Source # 
Instance details

Defined in PlutusIR.Core.Type

Flat Recursivity Source # 
Instance details

Defined in PlutusIR.Core.Instance.Flat

PrettyBy (PrettyConfigClassic configName) Recursivity Source # 
Instance details

Defined in PlutusIR.Core.Instance.Pretty

Methods

prettyBy ∷ PrettyConfigClassic configName → Recursivity → Doc ann Source #

prettyListBy ∷ PrettyConfigClassic configName → [Recursivity] → Doc ann Source #

type Rep Recursivity Source # 
Instance details

Defined in PlutusIR.Core.Type

type Rep Recursivity = D1 ('MetaData "Recursivity" "PlutusIR.Core.Type" "plutus-core-1.69.0.0-inplace-plutus-ir" 'False) (C1 ('MetaCons "NonRec" 'PrefixI 'False) (U1 ∷ Type → Type) :+: C1 ('MetaCons "Rec" 'PrefixI 'False) (U1 ∷ Type → Type))

data Strictness Source #

Constructors

NonStrict 
Strict 

Instances

Instances details
Generic Strictness Source # 
Instance details

Defined in PlutusIR.Core.Type

Associated Types

type Rep Strictness ∷ Type → Type Source #

Show Strictness Source # 
Instance details

Defined in PlutusIR.Core.Type

Eq Strictness Source # 
Instance details

Defined in PlutusIR.Core.Type

Flat Strictness Source # 
Instance details

Defined in PlutusIR.Core.Instance.Flat

PrettyBy (PrettyConfigClassic configName) Strictness Source # 
Instance details

Defined in PlutusIR.Core.Instance.Pretty

Methods

prettyBy ∷ PrettyConfigClassic configName → Strictness → Doc ann Source #

prettyListBy ∷ PrettyConfigClassic configName → [Strictness] → Doc ann Source #

type Rep Strictness Source # 
Instance details

Defined in PlutusIR.Core.Type

type Rep Strictness = D1 ('MetaData "Strictness" "PlutusIR.Core.Type" "plutus-core-1.69.0.0-inplace-plutus-ir" 'False) (C1 ('MetaCons "NonStrict" 'PrefixI 'False) (U1 ∷ Type → Type) :+: C1 ('MetaCons "Strict" 'PrefixI 'False) (U1 ∷ Type → Type))

data Binding tyname name uni fun a Source #

Constructors

TermBind a Strictness (VarDecl tyname name uni a) (Term tyname name uni fun a) 
TypeBind a (TyVarDecl tyname a) (Type tyname uni a) 
DatatypeBind a (Datatype tyname name uni a) 

Instances

Instances details
name ~ Name ⇒ Reference Name (Binding tyname name uni fun) Source #

Unlike other Reference instances this one does not guarantee that the name will actually be referenced, but it's too convenient to have this instance to give up on it, without it would be awkward to express "reference this binding in this thing".

Instance details

Defined in PlutusIR.Core.Instance.Scoping

Methods

referenceVia ∷ (∀ name0. ToScopedName name0 ⇒ name0 → NameAnn) → Name → Binding tyname name uni fun NameAnn → Binding tyname name uni fun NameAnn Source #

tyname ~ TyName ⇒ Reference TyName (Binding tyname name uni fun) Source # 
Instance details

Defined in PlutusIR.Core.Instance.Scoping

Methods

referenceVia ∷ (∀ name0. ToScopedName name0 ⇒ name0 → NameAnn) → TyName → Binding tyname name uni fun NameAnn → Binding tyname name uni fun NameAnn Source #

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

Defined in PlutusIR.Core.Instance.Pretty

Methods

prettyBy ∷ PrettyConfigClassic configName → Binding tyname name uni fun ann → Doc ann0 Source #

prettyListBy ∷ PrettyConfigClassic configName → [Binding tyname name uni fun ann] → Doc ann0 Source #

(PrettyConstraints configName tyname name uni, Pretty fun) ⇒ PrettyBy (PrettyConfigReadable configName) (Binding tyname name uni fun ann) Source # 
Instance details

Defined in PlutusIR.Core.Instance.Pretty.Readable

Methods

prettyBy ∷ PrettyConfigReadable configName → Binding tyname name uni fun ann → Doc ann0 Source #

prettyListBy ∷ PrettyConfigReadable configName → [Binding tyname name uni fun ann] → Doc ann0 Source #

Functor (Binding tyname name uni fun) Source # 
Instance details

Defined in PlutusIR.Core.Type

Methods

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

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

(tyname ~ TyName, name ~ Name) ⇒ CollectScopeInfo (Binding tyname name uni fun) Source # 
Instance details

Defined in PlutusIR.Core.Instance.Scoping

Methods

collectScopeInfo ∷ Binding tyname name uni fun NameAnn → ScopeErrorOrInfo Source #

HasAnn (Binding tyname name uni fun) Source # 
Instance details

Defined in PlutusIR.Core.Type

Methods

getAnn ∷ Binding tyname name uni fun a → a Source #

modifyAnn ∷ (a → a) → Binding tyname name uni fun a → Binding tyname name uni fun a Source #

setAnn ∷ a → Binding tyname name uni fun a → Binding tyname name uni fun a Source #

Generic (Binding tyname name uni fun a) Source # 
Instance details

Defined in PlutusIR.Core.Type

Associated Types

type Rep (Binding tyname name uni fun a) ∷ Type → Type Source #

Methods

from ∷ Binding tyname name uni fun a → Rep (Binding tyname name uni fun a) x Source #

to ∷ Rep (Binding tyname name uni fun a) x → Binding tyname name uni fun a Source #

(Show tyname, Show name, Show fun, Show a, GShow uni, Everywhere uni Show, Closed uni) ⇒ Show (Binding tyname name uni fun a) Source # 
Instance details

Defined in PlutusIR.Core.Type

Methods

showsPrec ∷ Int → Binding tyname name uni fun a → ShowS Source #

show ∷ Binding tyname name uni fun a → String Source #

showList ∷ [Binding tyname name uni fun a] → ShowS Source #

(Closed uni, Everywhere uni Flat, Flat fun, Flat a, Flat tyname, Flat name) ⇒ Flat (Binding tyname name uni fun a) Source # 
Instance details

Defined in PlutusIR.Core.Instance.Flat

Methods

encode ∷ Binding tyname name uni fun a → Encoding Source #

decode ∷ Get (Binding tyname name uni fun a) Source #

size ∷ Binding tyname name uni fun a → NumBits → NumBits Source #

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

Defined in PlutusIR.Core.Instance.Pretty

Methods

pretty ∷ Binding tyname name uni fun ann → Doc ann0 Source #

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

(Reference TyName t, Reference Name t) ⇒ Reference (Binding TyName Name uni fun ann) t Source # 
Instance details

Defined in PlutusIR.Core.Instance.Scoping

Methods

referenceVia ∷ (∀ name. ToScopedName name ⇒ name → NameAnn) → Binding TyName Name uni fun ann → t NameAnn → t NameAnn Source #

type Rep (Binding tyname name uni fun a) Source # 
Instance details

Defined in PlutusIR.Core.Type

bindingSubterms ∷ Traversal' (Binding tyname name uni fun a) (Term tyname name uni fun a) Source #

Get all the direct child Terms of the given Binding.

bindingSubtypes ∷ Traversal' (Binding tyname name uni fun a) (Type tyname uni a) Source #

Get all the direct child Kinds of the given Binding.

bindingIds ∷ (HasUnique tyname TypeUnique, HasUnique name TermUnique) ⇒ Traversal1' (Binding tyname name uni fun a) Unique Source #

All the identifiers/names introduced by this binding In case of a datatype-binding it has multiple identifiers: the type, constructors, match function

data Program tyname name uni fun ann Source #

Constructors

Program 

Fields

Instances

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

Defined in PlutusIR.Core.Instance.Pretty

Methods

prettyBy ∷ PrettyConfigPlc → Program tyname name uni fun ann → Doc ann0 Source #

prettyListBy ∷ PrettyConfigPlc → [Program tyname name uni fun ann] → Doc ann0 Source #

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

Defined in PlutusIR.Core.Instance.Pretty

Methods

prettyBy ∷ PrettyConfigClassic configName → Program tyname name uni fun ann → Doc ann0 Source #

prettyListBy ∷ PrettyConfigClassic configName → [Program tyname name uni fun ann] → Doc ann0 Source #

(PrettyConstraints configName tyname name uni, Pretty fun) ⇒ PrettyBy (PrettyConfigReadable configName) (Program tyname name uni fun a) Source # 
Instance details

Defined in PlutusIR.Core.Instance.Pretty.Readable

Methods

prettyBy ∷ PrettyConfigReadable configName → Program tyname name uni fun a → Doc ann Source #

prettyListBy ∷ PrettyConfigReadable configName → [Program tyname name uni fun a] → Doc ann Source #

Functor (Program tyname name uni fun) Source # 
Instance details

Defined in PlutusIR.Core.Type

Methods

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

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

(tyname ~ TyName, name ~ Name) ⇒ CollectScopeInfo (Program tyname name uni fun) Source # 
Instance details

Defined in PlutusIR.Core.Instance.Scoping

Methods

collectScopeInfo ∷ Program tyname name uni fun NameAnn → ScopeErrorOrInfo Source #

(tyname ~ TyName, name ~ Name) ⇒ EstablishScoping (Program tyname name uni fun) Source # 
Instance details

Defined in PlutusIR.Core.Instance.Scoping

Methods

establishScoping ∷ Program tyname name uni fun ann → Quote (Program tyname name uni fun NameAnn) Source #

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

Defined in PlutusIR.Core.Type

Associated Types

type Rep (Program tyname name uni fun ann) ∷ Type → Type Source #

Methods

from ∷ Program tyname name uni fun ann → Rep (Program tyname name uni fun ann) x Source #

to ∷ Rep (Program tyname name uni fun ann) x → Program tyname name uni fun ann Source #

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

Defined in PlutusIR.Core.Type

Methods

showsPrec ∷ Int → Program tyname name uni fun ann → ShowS Source #

show ∷ Program tyname name uni fun ann → String Source #

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

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

Defined in PlutusIR.Transform.Rename

Methods

rename ∷ MonadQuote m ⇒ Program tyname name uni fun ann → m (Program tyname name uni fun ann) Source #

(Closed uni, Everywhere uni Flat, Flat fun, Flat a, Flat tyname, Flat name) ⇒ Flat (Program tyname name uni fun a) Source # 
Instance details

Defined in PlutusIR.Core.Instance.Flat

Methods

encode ∷ Program tyname name uni fun a → Encoding Source #

decode ∷ Get (Program tyname name uni fun a) Source #

size ∷ Program tyname name uni fun a → NumBits → NumBits Source #

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

Defined in PlutusIR.Core.Instance.Pretty

Methods

pretty ∷ Program tyname name uni fun ann → Doc ann0 Source #

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

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

Defined in PlutusIR.Core.Type

type Rep (Program tyname name uni fun ann) = D1 ('MetaData "Program" "PlutusIR.Core.Type" "plutus-core-1.69.0.0-inplace-plutus-ir" '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 tyname name uni fun ann)))))
type HasUniques (Program tyname name uni fun ann) Source # 
Instance details

Defined in PlutusIR.Core.Type

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

applyProgram ∷ (MonadError ApplyProgramError m, Semigroup a) ⇒ Program tyname name uni fun a → Program tyname name uni fun a → m (Program tyname name uni fun a) Source #

Applies one program to another. Fails if the versions do not match and tries to merge annotations.

newtype TyName Source #

We use a newtype to enforce separation between names used for types and those used for terms.

Constructors

TyName 

Fields

Instances

Instances details
Generic TyName 
Instance details

Defined in PlutusCore.Name.Unique

Associated Types

type Rep TyName ∷ Type → Type Source #

Methods

from ∷ TyName → Rep TyName x Source #

to ∷ Rep TyName x → TyName Source #

Show TyName 
Instance details

Defined in PlutusCore.Name.Unique

NFData TyName 
Instance details

Defined in PlutusCore.Name.Unique

Methods

rnf ∷ TyName → () Source #

Eq TyName 
Instance details

Defined in PlutusCore.Name.Unique

Methods

(==) ∷ TyName → TyName → Bool Source #

(/=) ∷ TyName → TyName → Bool Source #

Ord TyName 
Instance details

Defined in PlutusCore.Name.Unique

Hashable TyName 
Instance details

Defined in PlutusCore.Name.Unique

Methods

hashWithSalt ∷ Int → TyName → Int Source #

hash ∷ TyName → Int Source #

Wrapped TyName 
Instance details

Defined in PlutusCore.Name.Unique

Associated Types

type Unwrapped TyName

Methods

_Wrapped' ∷ Iso' TyName (Unwrapped TyName)

ToScopedName TyName 
Instance details

Defined in PlutusCore.Check.Scoping

HasText TyName 
Instance details

Defined in PlutusCore.Name.Unique

HasUnique TyName TypeUnique 
Instance details

Defined in PlutusCore.Name.Unique

HasPrettyConfigName config ⇒ PrettyBy config TyName 
Instance details

Defined in PlutusCore.Name.Unique

Methods

prettyBy ∷ config → TyName → Doc ann Source #

prettyListBy ∷ config → [TyName] → Doc ann Source #

Lift TyName 
Instance details

Defined in PlutusCore.Name.Unique

Methods

lift ∷ Quote m ⇒ TyName → m Exp Source #

liftTyped ∷ ∀ (m ∷ Type → Type). Quote m ⇒ TyName → Code m TyName Source #

tyname ~ TyName ⇒ Reference TyName (VarDecl tyname name uni) Source # 
Instance details

Defined in PlutusIR.Core.Instance.Scoping

Methods

referenceVia ∷ (∀ name0. ToScopedName name0 ⇒ name0 → NameAnn) → TyName → VarDecl tyname name uni NameAnn → VarDecl tyname name uni NameAnn Source #

tyname ~ TyName ⇒ Reference TyName (Datatype tyname name uni) Source #

Scoping for data types is hard, so we employ some extra paranoia and reference the provided TyName in the type of every single constructor, and also apply the final head to that TyName.

Instance details

Defined in PlutusIR.Core.Instance.Scoping

Methods

referenceVia ∷ (∀ name0. ToScopedName name0 ⇒ name0 → NameAnn) → TyName → Datatype tyname name uni NameAnn → Datatype tyname name uni NameAnn Source #

tyname ~ TyName ⇒ Reference TyName (Binding tyname name uni fun) Source # 
Instance details

Defined in PlutusIR.Core.Instance.Scoping

Methods

referenceVia ∷ (∀ name0. ToScopedName name0 ⇒ name0 → NameAnn) → TyName → Binding tyname name uni fun NameAnn → Binding tyname name uni fun NameAnn Source #

tyname ~ TyName ⇒ Reference TyName (Term tyname name uni fun) Source # 
Instance details

Defined in PlutusIR.Core.Instance.Scoping

Methods

referenceVia ∷ (∀ name0. ToScopedName name0 ⇒ name0 → NameAnn) → TyName → Term tyname name uni fun NameAnn → Term tyname name uni fun NameAnn Source #

(Reference TyName t, Reference Name t) ⇒ Reference (Datatype TyName Name uni ann) t Source # 
Instance details

Defined in PlutusIR.Core.Instance.Scoping

Methods

referenceVia ∷ (∀ name. ToScopedName name ⇒ name → NameAnn) → Datatype TyName Name uni ann → t NameAnn → t NameAnn Source #

HasConstant (Term TyName Name uni fun ()) 
Instance details

Defined in PlutusCore.Builtin.HasConstant

Methods

asConstant ∷ Term TyName Name uni fun () → Either BuiltinError (Some (ValueOf (UniOf (Term TyName Name uni fun ())))) Source #

fromConstant ∷ Some (ValueOf (UniOf (Term TyName Name uni fun ()))) → Term TyName Name uni fun () Source #

(Reference TyName t, Reference Name t) ⇒ Reference (Binding TyName Name uni fun ann) t Source # 
Instance details

Defined in PlutusIR.Core.Instance.Scoping

Methods

referenceVia ∷ (∀ name. ToScopedName name ⇒ name → NameAnn) → Binding TyName Name uni fun ann → t NameAnn → t NameAnn Source #

type Rep TyName 
Instance details

Defined in PlutusCore.Name.Unique

type Rep TyName = D1 ('MetaData "TyName" "PlutusCore.Name.Unique" "plutus-core-1.69.0.0-inplace" 'True) (C1 ('MetaCons "TyName" 'PrefixI 'True) (S1 ('MetaSel ('Just "unTyName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Name)))
type Unwrapped TyName 
Instance details

Defined in PlutusCore.Name.Unique

type Unwrapped TyName = GUnwrapped (Rep TyName)

data Name Source #

A Name represents variables/names in Plutus Core.

Constructors

Name 

Fields

Instances

Instances details
Generic Name 
Instance details

Defined in PlutusCore.Name.Unique

Associated Types

type Rep Name ∷ Type → Type Source #

Methods

from ∷ Name → Rep Name x Source #

to ∷ Rep Name x → Name Source #

Show Name 
Instance details

Defined in PlutusCore.Name.Unique

Methods

showsPrec ∷ Int → Name → ShowS Source #

show ∷ Name → String Source #

showList ∷ [Name] → ShowS Source #

NFData Name 
Instance details

Defined in PlutusCore.Name.Unique

Methods

rnf ∷ Name → () Source #

Eq Name 
Instance details

Defined in PlutusCore.Name.Unique

Methods

(==) ∷ Name → Name → Bool Source #

(/=) ∷ Name → Name → Bool Source #

Ord Name 
Instance details

Defined in PlutusCore.Name.Unique

Methods

compare ∷ Name → Name → Ordering Source #

(<) ∷ Name → Name → Bool Source #

(<=) ∷ Name → Name → Bool Source #

(>) ∷ Name → Name → Bool Source #

(>=) ∷ Name → Name → Bool Source #

max ∷ Name → Name → Name Source #

min ∷ Name → Name → Name Source #

Hashable Name 
Instance details

Defined in PlutusCore.Name.Unique

Methods

hashWithSalt ∷ Int → Name → Int Source #

hash ∷ Name → Int Source #

ToScopedName Name 
Instance details

Defined in PlutusCore.Check.Scoping

HasText Name 
Instance details

Defined in PlutusCore.Name.Unique

HasUnique Name TermUnique 
Instance details

Defined in PlutusCore.Name.Unique

HasPrettyConfigName config ⇒ PrettyBy config Name 
Instance details

Defined in PlutusCore.Name.Unique

Methods

prettyBy ∷ config → Name → Doc ann Source #

prettyListBy ∷ config → [Name] → Doc ann Source #

Lift Name 
Instance details

Defined in PlutusCore.Name.Unique

Methods

lift ∷ Quote m ⇒ Name → m Exp Source #

liftTyped ∷ ∀ (m ∷ Type → Type). Quote m ⇒ Name → Code m Name Source #

name ~ Name ⇒ Reference Name (Binding tyname name uni fun) Source #

Unlike other Reference instances this one does not guarantee that the name will actually be referenced, but it's too convenient to have this instance to give up on it, without it would be awkward to express "reference this binding in this thing".

Instance details

Defined in PlutusIR.Core.Instance.Scoping

Methods

referenceVia ∷ (∀ name0. ToScopedName name0 ⇒ name0 → NameAnn) → Name → Binding tyname name uni fun NameAnn → Binding tyname name uni fun NameAnn Source #

name ~ Name ⇒ Reference Name (Term tyname name uni fun) Source # 
Instance details

Defined in PlutusIR.Core.Instance.Scoping

Methods

referenceVia ∷ (∀ name0. ToScopedName name0 ⇒ name0 → NameAnn) → Name → Term tyname name uni fun NameAnn → Term tyname name uni fun NameAnn Source #

(Reference TyName t, Reference Name t) ⇒ Reference (Datatype TyName Name uni ann) t Source # 
Instance details

Defined in PlutusIR.Core.Instance.Scoping

Methods

referenceVia ∷ (∀ name. ToScopedName name ⇒ name → NameAnn) → Datatype TyName Name uni ann → t NameAnn → t NameAnn Source #

HasConstant (Term TyName Name uni fun ()) 
Instance details

Defined in PlutusCore.Builtin.HasConstant

Methods

asConstant ∷ Term TyName Name uni fun () → Either BuiltinError (Some (ValueOf (UniOf (Term TyName Name uni fun ())))) Source #

fromConstant ∷ Some (ValueOf (UniOf (Term TyName Name uni fun ()))) → Term TyName Name uni fun () Source #

(Reference TyName t, Reference Name t) ⇒ Reference (Binding TyName Name uni fun ann) t Source # 
Instance details

Defined in PlutusIR.Core.Instance.Scoping

Methods

referenceVia ∷ (∀ name. ToScopedName name ⇒ name → NameAnn) → Binding TyName Name uni fun ann → t NameAnn → t NameAnn Source #

type Rep Name 
Instance details

Defined in PlutusCore.Name.Unique

type Rep Name = D1 ('MetaData "Name" "PlutusCore.Name.Unique" "plutus-core-1.69.0.0-inplace" 'False) (C1 ('MetaCons "Name" 'PrefixI 'True) (S1 ('MetaSel ('Just "_nameText") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "_nameUnique") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Unique)))

data VarDecl tyname name (uni ∷ Type → Type) ann Source #

A "variable declaration", i.e. a name and a type for a variable.

Constructors

VarDecl 

Fields

Instances

Instances details
tyname ~ TyName ⇒ Reference TyName (VarDecl tyname name uni) Source # 
Instance details

Defined in PlutusIR.Core.Instance.Scoping

Methods

referenceVia ∷ (∀ name0. ToScopedName name0 ⇒ name0 → NameAnn) → TyName → VarDecl tyname name uni NameAnn → VarDecl tyname name uni NameAnn Source #

(PrettyClassicBy configName tyname, PrettyClassicBy configName name, PrettyParens (SomeTypeIn uni), Pretty ann) ⇒ PrettyBy (PrettyConfigClassic configName) (VarDecl tyname name uni ann) Source # 
Instance details

Defined in PlutusIR.Core.Instance.Pretty

Methods

prettyBy ∷ PrettyConfigClassic configName → VarDecl tyname name uni ann → Doc ann0 Source #

prettyListBy ∷ PrettyConfigClassic configName → [VarDecl tyname name uni ann] → Doc ann0 Source #

Functor (VarDecl tyname name uni) 
Instance details

Defined in PlutusCore.Core.Type

Methods

fmap ∷ (a → b) → VarDecl tyname name uni a → VarDecl tyname name uni b Source #

(<$) ∷ a → VarDecl tyname name uni b → VarDecl tyname name uni a Source #

(tyname ~ TyName, name ~ Name) ⇒ CollectScopeInfo (VarDecl tyname name uni) Source # 
Instance details

Defined in PlutusIR.Core.Instance.Scoping

Methods

collectScopeInfo ∷ VarDecl tyname name uni NameAnn → ScopeErrorOrInfo Source #

Generic (VarDecl tyname name uni ann) 
Instance details

Defined in PlutusCore.Core.Type

Associated Types

type Rep (VarDecl tyname name uni ann) ∷ Type → Type Source #

Methods

from ∷ VarDecl tyname name uni ann → Rep (VarDecl tyname name uni ann) x Source #

to ∷ Rep (VarDecl tyname name uni ann) x → VarDecl tyname name uni ann Source #

(GShow uni, Show ann, Show name, Show tyname) ⇒ Show (VarDecl tyname name uni ann) 
Instance details

Defined in PlutusCore.Core.Type

Methods

showsPrec ∷ Int → VarDecl tyname name uni ann → ShowS Source #

show ∷ VarDecl tyname name uni ann → String Source #

showList ∷ [VarDecl tyname name uni ann] → ShowS Source #

(PrettyClassic tyname, PrettyClassic name, PrettyParens (SomeTypeIn uni), Pretty ann) ⇒ Pretty (VarDecl tyname name uni ann) Source # 
Instance details

Defined in PlutusIR.Core.Instance.Pretty

Methods

pretty ∷ VarDecl tyname name uni ann → Doc ann0 Source #

prettyList ∷ [VarDecl tyname name uni ann] → Doc ann0 Source #

Reference name t ⇒ Reference (VarDecl tyname name uni ann) t Source # 
Instance details

Defined in PlutusIR.Core.Instance.Scoping

Methods

referenceVia ∷ (∀ name0. ToScopedName name0 ⇒ name0 → NameAnn) → VarDecl tyname name uni ann → t NameAnn → t NameAnn Source #

HasUnique name TermUnique ⇒ HasUnique (VarDecl tyname name uni ann) TermUnique 
Instance details

Defined in PlutusCore.Core.Type

Methods

unique ∷ Lens' (VarDecl tyname name uni ann) TermUnique Source #

type Rep (VarDecl tyname name uni ann) 
Instance details

Defined in PlutusCore.Core.Type

type Rep (VarDecl tyname name uni ann) = D1 ('MetaData "VarDecl" "PlutusCore.Core.Type" "plutus-core-1.69.0.0-inplace" 'False) (C1 ('MetaCons "VarDecl" 'PrefixI 'True) (S1 ('MetaSel ('Just "_varDeclAnn") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ann) :*: (S1 ('MetaSel ('Just "_varDeclName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 name) :*: S1 ('MetaSel ('Just "_varDeclType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type tyname uni ann)))))

data TyVarDecl tyname ann Source #

A "type variable declaration", i.e. a name and a kind for a type variable.

Constructors

TyVarDecl 

Fields

Instances

Instances details
Functor (TyVarDecl tyname) 
Instance details

Defined in PlutusCore.Core.Type

Methods

fmap ∷ (a → b) → TyVarDecl tyname a → TyVarDecl tyname b Source #

(<$) ∷ a → TyVarDecl tyname b → TyVarDecl tyname a Source #

tyname ~ TyName ⇒ CollectScopeInfo (TyVarDecl tyname) Source # 
Instance details

Defined in PlutusIR.Core.Instance.Scoping

(PrettyClassicBy configName tyname, Pretty ann) ⇒ PrettyBy (PrettyConfigClassic configName) (TyVarDecl tyname ann) Source # 
Instance details

Defined in PlutusIR.Core.Instance.Pretty

Methods

prettyBy ∷ PrettyConfigClassic configName → TyVarDecl tyname ann → Doc ann0 Source #

prettyListBy ∷ PrettyConfigClassic configName → [TyVarDecl tyname ann] → Doc ann0 Source #

Generic (TyVarDecl tyname ann) 
Instance details

Defined in PlutusCore.Core.Type

Associated Types

type Rep (TyVarDecl tyname ann) ∷ Type → Type Source #

Methods

from ∷ TyVarDecl tyname ann → Rep (TyVarDecl tyname ann) x Source #

to ∷ Rep (TyVarDecl tyname ann) x → TyVarDecl tyname ann Source #

(Show ann, Show tyname) ⇒ Show (TyVarDecl tyname ann) 
Instance details

Defined in PlutusCore.Core.Type

Methods

showsPrec ∷ Int → TyVarDecl tyname ann → ShowS Source #

show ∷ TyVarDecl tyname ann → String Source #

showList ∷ [TyVarDecl tyname ann] → ShowS Source #

(PrettyClassic tyname, Pretty ann) ⇒ Pretty (TyVarDecl tyname ann) Source # 
Instance details

Defined in PlutusIR.Core.Instance.Pretty

Methods

pretty ∷ TyVarDecl tyname ann → Doc ann0 Source #

prettyList ∷ [TyVarDecl tyname ann] → Doc ann0 Source #

Reference tyname t ⇒ Reference (TyVarDecl tyname ann) t Source # 
Instance details

Defined in PlutusIR.Core.Instance.Scoping

Methods

referenceVia ∷ (∀ name. ToScopedName name ⇒ name → NameAnn) → TyVarDecl tyname ann → t NameAnn → t NameAnn Source #

HasUnique tyname TypeUnique ⇒ HasUnique (TyVarDecl tyname ann) TypeUnique 
Instance details

Defined in PlutusCore.Core.Type

Methods

unique ∷ Lens' (TyVarDecl tyname ann) TypeUnique Source #

type Rep (TyVarDecl tyname ann) 
Instance details

Defined in PlutusCore.Core.Type

type Rep (TyVarDecl tyname ann) = D1 ('MetaData "TyVarDecl" "PlutusCore.Core.Type" "plutus-core-1.69.0.0-inplace" 'False) (C1 ('MetaCons "TyVarDecl" 'PrefixI 'True) (S1 ('MetaSel ('Just "_tyVarDeclAnn") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ann) :*: (S1 ('MetaSel ('Just "_tyVarDeclName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 tyname) :*: S1 ('MetaSel ('Just "_tyVarDeclKind") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Kind ann)))))