| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
PlutusCore.Core
Synopsis
- module PlutusCore.Core.Plated
- data Type tyname (uni :: Type -> Type) ann
- = TyVar ann tyname
- | TyFun ann (Type tyname uni ann) (Type tyname uni ann)
- | TyIFix ann (Type tyname uni ann) (Type tyname uni ann)
- | TyForall ann tyname (Kind ann) (Type tyname uni ann)
- | TyBuiltin ann (SomeTypeIn uni)
- | TyLam ann tyname (Kind ann) (Type tyname uni ann)
- | TyApp ann (Type tyname uni ann) (Type tyname uni ann)
- | TySOP ann [[Type tyname uni ann]]
- data Kind ann
- data Version = Version {}
- data Term tyname name (uni :: Type -> Type) fun ann
- = Var ann name
- | LamAbs ann name (Type tyname uni ann) (Term tyname name uni fun ann)
- | Apply ann (Term tyname name uni fun ann) (Term tyname name uni fun ann)
- | TyAbs ann tyname (Kind ann) (Term tyname name uni fun ann)
- | TyInst ann (Term tyname name uni fun ann) (Type tyname uni ann)
- | IWrap ann (Type tyname uni ann) (Type tyname uni ann) (Term tyname name uni fun ann)
- | Unwrap ann (Term tyname name uni fun ann)
- | Constr ann (Type tyname uni ann) Word64 [Term tyname name uni fun ann]
- | Case ann (Type tyname uni ann) (Term tyname name uni fun ann) [Term tyname name uni fun ann]
- | Constant ann (Some (ValueOf uni))
- | Builtin ann fun
- | Error ann (Type tyname uni ann)
- type HasTermLevel (uni :: Type -> Type) = Includes uni :: a -> Constraint
- type family UniOf a :: Type -> Type
- toPatFuncKind :: Kind () -> Kind ()
- fromPatFuncKind :: Kind () -> Maybe (Kind ())
- argsFunKind :: Kind ann -> [Kind ann]
- data Program tyname name (uni :: Type -> Type) fun ann = Program {}
- newtype Normalized a = Normalized {
- unNormalized :: a
- latestVersion :: Version
- termAnn :: forall tyname name (uni :: Type -> Type) fun ann. Term tyname name uni fun ann -> ann
- typeAnn :: forall tyname (uni :: Type -> Type) ann. Type tyname uni ann -> ann
- tyVarDeclAnn :: forall tyname ann f. Functor f => (ann -> f ann) -> TyVarDecl tyname ann -> f (TyVarDecl tyname ann)
- tyVarDeclName :: forall tyname1 ann tyname2 f. Functor f => (tyname1 -> f tyname2) -> TyVarDecl tyname1 ann -> f (TyVarDecl tyname2 ann)
- tyVarDeclKind :: forall tyname ann f. Functor f => (Kind ann -> f (Kind ann)) -> TyVarDecl tyname ann -> f (TyVarDecl tyname ann)
- varDeclAnn :: forall tyname name (uni :: Type -> Type) ann f. Functor f => (ann -> f ann) -> VarDecl tyname name uni ann -> f (VarDecl tyname name uni ann)
- varDeclName :: forall tyname name1 (uni :: Type -> Type) ann name2 f. Functor f => (name1 -> f name2) -> VarDecl tyname name1 uni ann -> f (VarDecl tyname name2 uni ann)
- varDeclType :: forall tyname1 name (uni1 :: Type -> Type) ann tyname2 (uni2 :: Type -> Type) f. Functor f => (Type tyname1 uni1 ann -> f (Type tyname2 uni2 ann)) -> VarDecl tyname1 name uni1 ann -> f (VarDecl tyname2 name uni2 ann)
- tyDeclAnn :: forall tyname (uni :: Type -> Type) ann f. Functor f => (ann -> f ann) -> TyDecl tyname uni ann -> f (TyDecl tyname uni ann)
- tyDeclType :: forall tyname1 (uni1 :: Type -> Type) ann tyname2 (uni2 :: Type -> Type) f. Functor f => (Type tyname1 uni1 ann -> f (Type tyname2 uni2 ann)) -> TyDecl tyname1 uni1 ann -> f (TyDecl tyname2 uni2 ann)
- tyDeclKind :: forall tyname (uni :: Type -> Type) ann f. Functor f => (Kind ann -> f (Kind ann)) -> TyDecl tyname uni ann -> f (TyDecl tyname uni ann)
- progAnn :: forall tyname name (uni :: Type -> Type) fun ann f. Functor f => (ann -> f ann) -> Program tyname name uni fun ann -> f (Program tyname name uni fun ann)
- progVer :: forall tyname name (uni :: Type -> Type) fun ann f. Functor f => (Version -> f Version) -> Program tyname name uni fun ann -> f (Program tyname name uni fun ann)
- progTerm :: forall tyname1 name1 (uni1 :: Type -> Type) fun1 ann tyname2 name2 (uni2 :: Type -> Type) fun2 f. Functor f => (Term tyname1 name1 uni1 fun1 ann -> f (Term tyname2 name2 uni2 fun2 ann)) -> Program tyname1 name1 uni1 fun1 ann -> f (Program tyname2 name2 uni2 fun2 ann)
- mapFun :: forall fun fun' tyname name (uni :: Type -> Type) ann. (fun -> fun') -> Term tyname name uni fun ann -> Term tyname name uni fun' ann
- type family HasUniques a
- data VarDecl tyname name (uni :: Type -> Type) ann = VarDecl {
- _varDeclAnn :: ann
- _varDeclName :: name
- _varDeclType :: Type tyname uni ann
- data TyVarDecl tyname ann = TyVarDecl {
- _tyVarDeclAnn :: ann
- _tyVarDeclName :: tyname
- _tyVarDeclKind :: Kind ann
- data TyDecl tyname (uni :: Type -> Type) ann = TyDecl {
- _tyDeclAnn :: ann
- _tyDeclType :: Type tyname uni ann
- _tyDeclKind :: Kind ann
- tyDeclVar :: forall tyname ann (uni :: Type -> Type). TyVarDecl tyname ann -> TyDecl tyname uni ann
- versionMajor :: Lens' Version Natural
- versionMinor :: Lens' Version Natural
- versionPatch :: Lens' Version Natural
- plcVersion100 :: Version
- plcVersion110 :: Version
- firstVersion :: Version
- knownVersions :: Set Version
- newtype Binder name = Binder {
- unBinder :: name
- splitFunTyParts :: forall tyname (uni :: Type -> Type) a. Type tyname uni a -> NonEmpty (Type tyname uni a)
- funTyArgs :: forall tyname (uni :: Type -> Type) a. Type tyname uni a -> [Type tyname uni a]
- funTyResultType :: forall tyname (uni :: Type -> Type) a. Type tyname uni a -> Type tyname uni a
Documentation
module PlutusCore.Core.Plated
data Type tyname (uni :: Type -> Type) ann Source #
A Type 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
| Functor Kind Source # | |||||
| CollectScopeInfo Kind Source # | |||||
Defined in PlutusCore.Core.Instance.Scoping Methods collectScopeInfo :: Kind NameAnn -> ScopeErrorOrInfo Source # | |||||
| EstablishScoping Kind Source # | |||||
Defined in PlutusCore.Core.Instance.Scoping | |||||
| DefaultPrettyPlcStrategy (Kind ann) => PrettyBy PrettyConfigPlc (Kind ann) Source # | |||||
Defined in PlutusCore.Core.Instance.Pretty.Plc Methods prettyBy :: PrettyConfigPlc -> Kind ann -> Doc ann0 # prettyListBy :: PrettyConfigPlc -> [Kind ann] -> Doc ann0 # | |||||
| Lift ann => Lift (Kind ann :: Type) Source # | |||||
| Generic (Kind ann) Source # | |||||
Defined in PlutusCore.Core.Type Associated Types
| |||||
| Show ann => Show (Kind ann) Source # | |||||
| NFData ann => NFData (Kind ann) Source # | |||||
Defined in PlutusCore.Core.Type | |||||
| Eq ann => Eq (Kind ann) Source # | |||||
| Hashable ann => Hashable (Kind ann) Source # | |||||
Defined in PlutusCore.Core.Type | |||||
| Flat ann => Flat (Kind ann) | |||||
| Pretty ann => Pretty (Kind ann) Source # | |||||
Defined in PlutusCore.Core.Instance.Pretty.Default | |||||
| Pretty ann => PrettyBy (PrettyConfigClassic configName) (Kind ann) Source # | |||||
Defined in PlutusCore.Core.Instance.Pretty.Classic Methods prettyBy :: PrettyConfigClassic configName -> Kind ann -> Doc ann0 # prettyListBy :: PrettyConfigClassic configName -> [Kind ann] -> Doc ann0 # | |||||
| PrettyBy (PrettyConfigReadable configName) (Kind a) Source # | |||||
Defined in PlutusCore.Core.Instance.Pretty.Readable Methods prettyBy :: PrettyConfigReadable configName -> Kind a -> Doc ann # prettyListBy :: PrettyConfigReadable configName -> [Kind a] -> Doc ann # | |||||
| type Rep (Kind ann) Source # | |||||
Defined in PlutusCore.Core.Type type Rep (Kind ann) = D1 ('MetaData "Kind" "PlutusCore.Core.Type" "plutus-core-1.60.0.0-LXFqBsoUlXsJIEqLytHte7" 'False) (C1 ('MetaCons "Type" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ann)) :+: C1 ('MetaCons "KindArrow" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ann) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Kind ann)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Kind ann))))) | |||||
| type HasUniques (Kind ann) Source # | |||||
Defined in PlutusCore.Core.Type | |||||
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.
Constructors
| Version | |
Fields | |
Instances
| Generic Version Source # | |||||
Defined in PlutusCore.Version Associated Types
| |||||
| Show Version Source # | |||||
| NFData Version Source # | |||||
Defined in PlutusCore.Version | |||||
| Eq Version Source # | |||||
| Ord Version Source # | |||||
Defined in PlutusCore.Version | |||||
| Hashable Version Source # | |||||
Defined in PlutusCore.Version | |||||
| Flat Version | |||||
| Pretty Version Source # | |||||
Defined in PlutusCore.Version | |||||
| type Rep Version Source # | |||||
Defined in PlutusCore.Version type Rep Version = D1 ('MetaData "Version" "PlutusCore.Version" "plutus-core-1.60.0.0-LXFqBsoUlXsJIEqLytHte7" '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)))) | |||||
data Term tyname name (uni :: Type -> Type) fun ann Source #
Constructors
| Var ann name | a named variable |
| LamAbs ann name (Type tyname uni ann) (Term tyname name uni fun ann) | lambda abstraction |
| Apply ann (Term tyname name uni fun ann) (Term tyname name uni fun ann) | application |
| TyAbs ann tyname (Kind ann) (Term tyname name uni fun ann) | type abstraction |
| TyInst ann (Term tyname name uni fun ann) (Type tyname uni ann) | instantiation |
| IWrap ann (Type tyname uni ann) (Type tyname uni ann) (Term tyname name uni fun ann) | wrapping |
| Unwrap ann (Term tyname name uni fun ann) | unwrapping See Note [Constr tag type] |
| Constr ann (Type tyname uni ann) Word64 [Term tyname name uni fun ann] | constructor |
| Case ann (Type tyname uni ann) (Term tyname name uni fun ann) [Term tyname name uni fun ann] | case |
| Constant ann (Some (ValueOf uni)) | constants |
| Builtin ann fun | builtin functions |
| Error ann (Type tyname uni ann) | fail with error |
Instances
| name ~ Name => Reference Name (Term tyname name uni fun) Source # | |||||
Defined in PlutusCore.Core.Instance.Scoping Methods referenceVia :: (forall 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 # | |||||
Defined in PlutusCore.Core.Instance.Scoping Methods referenceVia :: (forall 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 # | |||||
Defined in PlutusCore.Core.Instance.Pretty.Plc Methods prettyBy :: PrettyConfigPlc -> Term tyname name uni fun ann -> Doc ann0 # prettyListBy :: PrettyConfigPlc -> [Term tyname name uni fun ann] -> Doc ann0 # | |||||
| (PrettyClassicBy configName tyname, PrettyClassicBy configName name, PrettyUni uni, Pretty fun, Pretty ann) => PrettyBy (PrettyConfigClassic configName) (Term tyname name uni fun ann) Source # | |||||
Defined in PlutusCore.Core.Instance.Pretty.Classic Methods prettyBy :: PrettyConfigClassic configName -> Term tyname name uni fun ann -> Doc ann0 # prettyListBy :: PrettyConfigClassic configName -> [Term tyname name uni fun ann] -> Doc ann0 # | |||||
| (PrettyReadableBy configName tyname, PrettyReadableBy configName name, PrettyUni uni, Pretty fun) => PrettyBy (PrettyConfigReadable configName) (Term tyname name uni fun a) Source # | |||||
Defined in PlutusCore.Core.Instance.Pretty.Readable Methods prettyBy :: PrettyConfigReadable configName -> Term tyname name uni fun a -> Doc ann # prettyListBy :: PrettyConfigReadable configName -> [Term tyname name uni fun a] -> Doc ann # | |||||
| Functor (Term tyname name uni fun) Source # | |||||
| (tyname ~ TyName, name ~ Name) => CollectScopeInfo (Term tyname name uni fun) Source # | |||||
Defined in PlutusCore.Core.Instance.Scoping Methods collectScopeInfo :: Term tyname name uni fun NameAnn -> ScopeErrorOrInfo Source # | |||||
| (tyname ~ TyName, name ~ Name) => EstablishScoping (Term tyname name uni fun) Source # | |||||
Defined in PlutusCore.Core.Instance.Scoping | |||||
| TermLike (Term tyname name uni fun) tyname name uni fun Source # | |||||
Defined in PlutusCore.MkPlc 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 ann) Source # | |||||
Defined in PlutusCore.Core.Type Associated Types
| |||||
| (Show tyname, Show name, GShow uni, Everywhere uni Show, Show fun, Show ann, Closed uni) => Show (Term tyname name uni fun ann) Source # | |||||
| (NFData tyname, NFData name, NFData fun, NFData ann, Everywhere uni NFData, Closed uni) => NFData (Term tyname name uni fun ann) Source # | |||||
Defined in PlutusCore.Core.Type | |||||
| (GEq uni, Closed uni, Everywhere uni Eq, Eq fun, Eq ann) => Eq (Term NamedTyDeBruijn NamedDeBruijn uni fun ann) Source # | |||||
Defined in PlutusCore.Core.Instance.Eq Methods (==) :: Term NamedTyDeBruijn NamedDeBruijn uni fun ann -> Term NamedTyDeBruijn NamedDeBruijn uni fun ann -> Bool Source # (/=) :: Term NamedTyDeBruijn NamedDeBruijn uni fun ann -> Term NamedTyDeBruijn NamedDeBruijn uni fun ann -> Bool Source # | |||||
| (GEq uni, Closed uni, Everywhere uni Eq, Eq fun, Eq ann) => Eq (Term TyDeBruijn DeBruijn uni fun ann) Source # | |||||
Defined in PlutusCore.Core.Instance.Eq Methods (==) :: Term TyDeBruijn DeBruijn uni fun ann -> Term TyDeBruijn DeBruijn uni fun ann -> Bool Source # (/=) :: Term TyDeBruijn DeBruijn uni fun ann -> Term TyDeBruijn DeBruijn uni fun ann -> Bool Source # | |||||
| (GEq uni, Closed uni, Everywhere uni Eq, Eq fun, Eq ann) => Eq (Term TyName Name uni fun ann) Source # | |||||
| (Closed uni, Everywhere uni Flat, Flat fun, Flat ann, Flat tyname, Flat name) => Flat (Term tyname name uni fun ann) | |||||
| HasConstant (Term TyName Name uni fun ()) Source # | |||||
| ExMemoryUsage (Term tyname name uni fun ann) Source # | |||||
Defined in PlutusCore.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 # | |||||
Defined in PlutusCore.Rename | |||||
| (PrettyClassic tyname, PrettyClassic name, PrettyUni uni, Pretty fun, Pretty ann) => Pretty (Term tyname name uni fun ann) Source # | |||||
Defined in PlutusCore.Core.Instance.Pretty.Default | |||||
| type Rep (Term tyname name uni fun ann) Source # | |||||
Defined in PlutusCore.Core.Type type Rep (Term tyname name uni fun ann) = D1 ('MetaData "Term" "PlutusCore.Core.Type" "plutus-core-1.60.0.0-LXFqBsoUlXsJIEqLytHte7" 'False) (((C1 ('MetaCons "Var" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ann) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 name)) :+: (C1 ('MetaCons "LamAbs" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ann) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 name)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type tyname uni ann)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Term tyname name uni fun ann)))) :+: C1 ('MetaCons "Apply" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ann) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Term tyname name uni fun ann)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Term tyname name uni fun ann)))))) :+: (C1 ('MetaCons "TyAbs" '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 (Term tyname name uni fun ann)))) :+: (C1 ('MetaCons "TyInst" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ann) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Term tyname name uni fun ann)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type tyname uni ann)))) :+: C1 ('MetaCons "IWrap" '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)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Term tyname name uni fun ann))))))) :+: ((C1 ('MetaCons "Unwrap" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ann) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Term tyname name uni fun ann))) :+: (C1 ('MetaCons "Constr" '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 Word64) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Term tyname name uni fun ann]))) :+: C1 ('MetaCons "Case" '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 (Term tyname name uni fun ann)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Term tyname name uni fun ann]))))) :+: (C1 ('MetaCons "Constant" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ann) :*: 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 ann) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 fun)) :+: C1 ('MetaCons "Error" '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 (Term tyname name uni fun ann) Source # | |||||
Defined in PlutusCore.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 # | |||||
Defined in PlutusCore.Core.Type | |||||
type HasTermLevel (uni :: Type -> Type) = Includes uni :: a -> Constraint Source #
Specifies that the given type is a built-in one and its values can be embedded into a Term.
type family UniOf a :: Type -> Type Source #
Extract the universe from a type.
Instances
| type UniOf (Opaque val rep) Source # | |
Defined in PlutusCore.Builtin.Polymorphism | |
| type UniOf (SomeConstant uni rep) Source # | |
Defined in PlutusCore.Builtin.Polymorphism | |
| type UniOf (CkValue uni fun) Source # | |
Defined in PlutusCore.Evaluation.Machine.Ck | |
| type UniOf (CekValue uni fun ann) Source # | |
| type UniOf (Term name uni fun ann) Source # | |
Defined in UntypedPlutusCore.Core.Type | |
| type UniOf (Term tyname name uni fun ann) Source # | |
Defined in PlutusCore.Core.Type | |
toPatFuncKind :: Kind () -> Kind () Source #
argsFunKind :: Kind ann -> [Kind ann] Source #
Extract all a_i from a_0 -> a_1 -> ... -> r.
data Program tyname name (uni :: Type -> Type) fun ann Source #
Constructors
| Program | |
Instances
| DefaultPrettyPlcStrategy (Program tyname name uni fun ann) => PrettyBy PrettyConfigPlc (Program tyname name uni fun ann) Source # | |||||
Defined in PlutusCore.Core.Instance.Pretty.Plc Methods prettyBy :: PrettyConfigPlc -> Program tyname name uni fun ann -> Doc ann0 # prettyListBy :: PrettyConfigPlc -> [Program tyname name uni fun ann] -> Doc ann0 # | |||||
| (PrettyClassicBy configName (Term tyname name uni fun ann), Pretty ann) => PrettyBy (PrettyConfigClassic configName) (Program tyname name uni fun ann) Source # | |||||
Defined in PlutusCore.Core.Instance.Pretty.Classic Methods prettyBy :: PrettyConfigClassic configName -> Program tyname name uni fun ann -> Doc ann0 # prettyListBy :: PrettyConfigClassic configName -> [Program tyname name uni fun ann] -> Doc ann0 # | |||||
| PrettyReadableBy configName (Term tyname name uni fun a) => PrettyBy (PrettyConfigReadable configName) (Program tyname name uni fun a) Source # | |||||
Defined in PlutusCore.Core.Instance.Pretty.Readable Methods prettyBy :: PrettyConfigReadable configName -> Program tyname name uni fun a -> Doc ann # prettyListBy :: PrettyConfigReadable configName -> [Program tyname name uni fun a] -> Doc ann # | |||||
| Functor (Program tyname name uni fun) Source # | |||||
| (tyname ~ TyName, name ~ Name) => CollectScopeInfo (Program tyname name uni fun) Source # | |||||
Defined in PlutusCore.Core.Instance.Scoping Methods collectScopeInfo :: Program tyname name uni fun NameAnn -> ScopeErrorOrInfo Source # | |||||
| (tyname ~ TyName, name ~ Name) => EstablishScoping (Program tyname name uni fun) Source # | |||||
Defined in PlutusCore.Core.Instance.Scoping | |||||
| Generic (Program tyname name uni fun ann) Source # | |||||
Defined in PlutusCore.Core.Type Associated Types
| |||||
| (Show tyname, Show name, GShow uni, Everywhere uni Show, Show fun, Show ann, Closed uni) => Show (Program tyname name uni fun ann) Source # | |||||
| (NFData tyname, NFData name, Everywhere uni NFData, NFData fun, NFData ann, Closed uni) => NFData (Program tyname name uni fun ann) Source # | |||||
Defined in PlutusCore.Core.Type | |||||
| (GEq uni, Closed uni, Everywhere uni Eq, Eq fun, Eq ann, Eq (Term tyname name uni fun ann)) => Eq (Program tyname name uni fun ann) Source # | |||||
| (Flat ann, Flat (Term tyname name uni fun ann)) => Flat (Program tyname name uni fun ann) | |||||
| HasUniques (Program tyname name uni fun ann) => Rename (Program tyname name uni fun ann) Source # | |||||
Defined in PlutusCore.Rename | |||||
| (PrettyClassic tyname, PrettyClassic name, PrettyUni uni, Pretty fun, Pretty ann) => Pretty (Program tyname name uni fun ann) Source # | |||||
Defined in PlutusCore.Core.Instance.Pretty.Default | |||||
| type Rep (Program tyname name uni fun ann) Source # | |||||
Defined in PlutusCore.Core.Type type Rep (Program tyname name uni fun ann) = D1 ('MetaData "Program" "PlutusCore.Core.Type" "plutus-core-1.60.0.0-LXFqBsoUlXsJIEqLytHte7" '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 # | |||||
Defined in PlutusCore.Core.Type | |||||
newtype Normalized a Source #
Constructors
| Normalized | |
Fields
| |
Instances
| Foldable Normalized Source # | |||||
Defined in PlutusCore.Core.Type Methods fold :: Monoid m => Normalized m -> m Source # foldMap :: Monoid m => (a -> m) -> Normalized a -> m Source # foldMap' :: Monoid m => (a -> m) -> Normalized a -> m Source # foldr :: (a -> b -> b) -> b -> Normalized a -> b Source # foldr' :: (a -> b -> b) -> b -> Normalized a -> b Source # foldl :: (b -> a -> b) -> b -> Normalized a -> b Source # foldl' :: (b -> a -> b) -> b -> Normalized a -> b Source # foldr1 :: (a -> a -> a) -> Normalized a -> a Source # foldl1 :: (a -> a -> a) -> Normalized a -> a Source # toList :: Normalized a -> [a] Source # null :: Normalized a -> Bool Source # length :: Normalized a -> Int Source # elem :: Eq a => a -> Normalized a -> Bool Source # maximum :: Ord a => Normalized a -> a Source # minimum :: Ord a => Normalized a -> a Source # sum :: Num a => Normalized a -> a Source # product :: Num a => Normalized a -> a Source # | |||||
| Traversable Normalized Source # | |||||
Defined in PlutusCore.Core.Type Methods traverse :: Applicative f => (a -> f b) -> Normalized a -> f (Normalized b) Source # sequenceA :: Applicative f => Normalized (f a) -> f (Normalized a) Source # mapM :: Monad m => (a -> m b) -> Normalized a -> m (Normalized b) Source # sequence :: Monad m => Normalized (m a) -> m (Normalized a) Source # | |||||
| Applicative Normalized Source # | |||||
Defined in PlutusCore.Core.Type Methods pure :: a -> Normalized a Source # (<*>) :: Normalized (a -> b) -> Normalized a -> Normalized b Source # liftA2 :: (a -> b -> c) -> Normalized a -> Normalized b -> Normalized c Source # (*>) :: Normalized a -> Normalized b -> Normalized b Source # (<*) :: Normalized a -> Normalized b -> Normalized a Source # | |||||
| Functor Normalized Source # | |||||
Defined in PlutusCore.Core.Type Methods fmap :: (a -> b) -> Normalized a -> Normalized b Source # (<$) :: a -> Normalized b -> Normalized a Source # | |||||
| PrettyBy config a => PrettyBy config (Normalized a) Source # | |||||
Defined in PlutusCore.Core.Type Methods prettyBy :: config -> Normalized a -> Doc ann # prettyListBy :: config -> [Normalized a] -> Doc ann # | |||||
| Generic (Normalized a) Source # | |||||
Defined in PlutusCore.Core.Type Associated Types
Methods from :: Normalized a -> Rep (Normalized a) x Source # to :: Rep (Normalized a) x -> Normalized a Source # | |||||
| Show a => Show (Normalized a) Source # | |||||
Defined in PlutusCore.Core.Type | |||||
| NFData a => NFData (Normalized a) Source # | |||||
Defined in PlutusCore.Core.Type Methods rnf :: Normalized a -> () Source # | |||||
| Eq a => Eq (Normalized a) Source # | |||||
Defined in PlutusCore.Core.Type Methods (==) :: Normalized a -> Normalized a -> Bool Source # (/=) :: Normalized a -> Normalized a -> Bool Source # | |||||
| Flat a => Flat (Normalized a) | |||||
Defined in PlutusCore.FlatInstances Methods encode :: Normalized a -> Encoding decode :: Get (Normalized a) size :: Normalized a -> NumBits -> NumBits | |||||
| Rename a => Rename (Normalized a) Source # | |||||
Defined in PlutusCore.Rename Methods rename :: MonadQuote m => Normalized a -> m (Normalized a) Source # | |||||
| Pretty a => Pretty (Normalized a) Source # | |||||
Defined in PlutusCore.Core.Type | |||||
| type Rep (Normalized a) Source # | |||||
Defined in PlutusCore.Core.Type type Rep (Normalized a) = D1 ('MetaData "Normalized" "PlutusCore.Core.Type" "plutus-core-1.60.0.0-LXFqBsoUlXsJIEqLytHte7" 'True) (C1 ('MetaCons "Normalized" 'PrefixI 'True) (S1 ('MetaSel ('Just "unNormalized") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))) | |||||
latestVersion :: Version Source #
The latest version of Plutus Core supported by this library.
termAnn :: forall tyname name (uni :: Type -> Type) fun ann. Term tyname name uni fun ann -> ann Source #
tyVarDeclAnn :: forall tyname ann f. Functor f => (ann -> f ann) -> TyVarDecl tyname ann -> f (TyVarDecl tyname ann) Source #
tyVarDeclName :: forall tyname1 ann tyname2 f. Functor f => (tyname1 -> f tyname2) -> TyVarDecl tyname1 ann -> f (TyVarDecl tyname2 ann) Source #
tyVarDeclKind :: forall tyname ann f. Functor f => (Kind ann -> f (Kind ann)) -> TyVarDecl tyname ann -> f (TyVarDecl tyname ann) Source #
varDeclAnn :: forall tyname name (uni :: Type -> Type) ann f. Functor f => (ann -> f ann) -> VarDecl tyname name uni ann -> f (VarDecl tyname name uni ann) Source #
varDeclName :: forall tyname name1 (uni :: Type -> Type) ann name2 f. Functor f => (name1 -> f name2) -> VarDecl tyname name1 uni ann -> f (VarDecl tyname name2 uni ann) Source #
varDeclType :: forall tyname1 name (uni1 :: Type -> Type) ann tyname2 (uni2 :: Type -> Type) f. Functor f => (Type tyname1 uni1 ann -> f (Type tyname2 uni2 ann)) -> VarDecl tyname1 name uni1 ann -> f (VarDecl tyname2 name uni2 ann) Source #
tyDeclAnn :: forall tyname (uni :: Type -> Type) ann f. Functor f => (ann -> f ann) -> TyDecl tyname uni ann -> f (TyDecl tyname uni ann) Source #
tyDeclType :: forall tyname1 (uni1 :: Type -> Type) ann tyname2 (uni2 :: Type -> Type) f. Functor f => (Type tyname1 uni1 ann -> f (Type tyname2 uni2 ann)) -> TyDecl tyname1 uni1 ann -> f (TyDecl tyname2 uni2 ann) Source #
tyDeclKind :: forall tyname (uni :: Type -> Type) ann f. Functor f => (Kind ann -> f (Kind ann)) -> TyDecl tyname uni ann -> f (TyDecl tyname uni ann) Source #
progAnn :: forall tyname name (uni :: Type -> Type) fun ann f. Functor f => (ann -> f ann) -> Program tyname name uni fun ann -> f (Program tyname name uni fun ann) Source #
progVer :: forall tyname name (uni :: Type -> Type) fun ann f. Functor f => (Version -> f Version) -> Program tyname name uni fun ann -> f (Program tyname name uni fun ann) Source #
progTerm :: forall tyname1 name1 (uni1 :: Type -> Type) fun1 ann tyname2 name2 (uni2 :: Type -> Type) fun2 f. Functor f => (Term tyname1 name1 uni1 fun1 ann -> f (Term tyname2 name2 uni2 fun2 ann)) -> Program tyname1 name1 uni1 fun1 ann -> f (Program tyname2 name2 uni2 fun2 ann) Source #
mapFun :: forall fun fun' tyname name (uni :: Type -> Type) ann. (fun -> fun') -> Term tyname name uni fun ann -> Term tyname name uni fun' ann Source #
Map a function over the set of built-in functions.
type family HasUniques a Source #
All kinds of uniques an entity contains.
Instances
| type HasUniques (Kind ann) Source # | |
Defined in PlutusCore.Core.Type | |
| type HasUniques (Type tyname uni ann) Source # | |
Defined in PlutusCore.Core.Type | |
| type HasUniques (Program name uni fun ann) Source # | |
Defined in UntypedPlutusCore.Core.Type | |
| type HasUniques (Term name uni fun ann) Source # | |
Defined in UntypedPlutusCore.Core.Type | |
| type HasUniques (Program tyname name uni fun ann) Source # | |
Defined in PlutusCore.Core.Type | |
| type HasUniques (Term tyname name uni fun ann) Source # | |
Defined in PlutusCore.Core.Type type HasUniques (Term tyname name uni fun ann) = (HasUnique tyname TypeUnique, HasUnique name TermUnique) | |
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
| (PrettyReadableBy configName tyname, PrettyReadableBy configName name, PrettyUni uni) => PrettyBy (PrettyConfigReadable configName) (VarDecl tyname name uni ann) Source # | |||||
Defined in PlutusCore.Core.Instance.Pretty.Readable Methods prettyBy :: PrettyConfigReadable configName -> VarDecl tyname name uni ann -> Doc ann0 # prettyListBy :: PrettyConfigReadable configName -> [VarDecl tyname name uni ann] -> Doc ann0 # | |||||
| Functor (VarDecl tyname name uni) Source # | |||||
| Generic (VarDecl tyname name uni ann) Source # | |||||
Defined in PlutusCore.Core.Type Associated Types
| |||||
| (GShow uni, Show ann, Show name, Show tyname) => Show (VarDecl tyname name uni ann) Source # | |||||
| (Closed uni, Flat ann, Flat tyname, Flat name) => Flat (VarDecl tyname name uni ann) | |||||
| HasUnique name TermUnique => HasUnique (VarDecl tyname name uni ann) TermUnique Source # | |||||
Defined in PlutusCore.Core.Type | |||||
| type Rep (VarDecl tyname name uni ann) Source # | |||||
Defined in PlutusCore.Core.Type type Rep (VarDecl tyname name uni ann) = D1 ('MetaData "VarDecl" "PlutusCore.Core.Type" "plutus-core-1.60.0.0-LXFqBsoUlXsJIEqLytHte7" '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
| Functor (TyVarDecl tyname) Source # | |||||
| PrettyReadableBy configName tyname => PrettyBy (PrettyConfigReadable configName) (TyVarDecl tyname ann) Source # | |||||
Defined in PlutusCore.Core.Instance.Pretty.Readable Methods prettyBy :: PrettyConfigReadable configName -> TyVarDecl tyname ann -> Doc ann0 # prettyListBy :: PrettyConfigReadable configName -> [TyVarDecl tyname ann] -> Doc ann0 # | |||||
| Generic (TyVarDecl tyname ann) Source # | |||||
Defined in PlutusCore.Core.Type Associated Types
| |||||
| (Show ann, Show tyname) => Show (TyVarDecl tyname ann) Source # | |||||
| (Flat ann, Flat tyname) => Flat (TyVarDecl tyname ann) | |||||
| HasUnique tyname TypeUnique => HasUnique (TyVarDecl tyname ann) TypeUnique Source # | |||||
Defined in PlutusCore.Core.Type | |||||
| type Rep (TyVarDecl tyname ann) Source # | |||||
Defined in PlutusCore.Core.Type type Rep (TyVarDecl tyname ann) = D1 ('MetaData "TyVarDecl" "PlutusCore.Core.Type" "plutus-core-1.60.0.0-LXFqBsoUlXsJIEqLytHte7" '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))))) | |||||
data TyDecl tyname (uni :: Type -> Type) ann Source #
A "type declaration", i.e. a kind for a type.
Constructors
| TyDecl | |
Fields
| |
Instances
| Functor (TyDecl tyname uni) Source # | |||||
| Generic (TyDecl tyname uni ann) Source # | |||||
Defined in PlutusCore.Core.Type Associated Types
| |||||
| (GShow uni, Show ann, Show tyname) => Show (TyDecl tyname uni ann) Source # | |||||
| type Rep (TyDecl tyname uni ann) Source # | |||||
Defined in PlutusCore.Core.Type type Rep (TyDecl tyname uni ann) = D1 ('MetaData "TyDecl" "PlutusCore.Core.Type" "plutus-core-1.60.0.0-LXFqBsoUlXsJIEqLytHte7" 'False) (C1 ('MetaCons "TyDecl" 'PrefixI 'True) (S1 ('MetaSel ('Just "_tyDeclAnn") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ann) :*: (S1 ('MetaSel ('Just "_tyDeclType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type tyname uni ann)) :*: S1 ('MetaSel ('Just "_tyDeclKind") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Kind ann))))) | |||||
tyDeclVar :: forall tyname ann (uni :: Type -> Type). TyVarDecl tyname ann -> TyDecl tyname uni ann Source #
plcVersion100 :: Version Source #
Plutus Core version 1.0.0
plcVersion110 :: Version Source #
Plutus Core version 1.1.0
firstVersion :: Version Source #
The first version of Plutus Core supported by this library.
knownVersions :: Set Version Source #
The set of versions that are "known", i.e. that have been released and have actual differences associated with them.
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
Instances
| Functor Binder Source # | |
| Show name => Show (Binder name) Source # | |
| Eq name => Eq (Binder name) Source # | |
| Flat (Binder DeBruijn) | |
| Flat (Binder FakeNamedDeBruijn) | |
Defined in PlutusCore.FlatInstances Methods encode :: Binder FakeNamedDeBruijn -> Encoding decode :: Get (Binder FakeNamedDeBruijn) size :: Binder FakeNamedDeBruijn -> NumBits -> NumBits | |
| Flat (Binder NamedDeBruijn) | |
Defined in PlutusCore.FlatInstances Methods encode :: Binder NamedDeBruijn -> Encoding decode :: Get (Binder NamedDeBruijn) size :: Binder NamedDeBruijn -> NumBits -> NumBits | |
| Flat (Binder NamedTyDeBruijn) | |
Defined in PlutusCore.FlatInstances Methods encode :: Binder NamedTyDeBruijn -> Encoding decode :: Get (Binder NamedTyDeBruijn) size :: Binder NamedTyDeBruijn -> NumBits -> NumBits | |
| Flat (Binder Name) | |
| Flat (Binder TyName) | |
splitFunTyParts :: forall tyname (uni :: Type -> Type) a. Type tyname uni a -> NonEmpty (Type tyname uni a) Source #
Get recursively all the domains and codomains of a type.
splitFunTyParts (A->B->C) = [A, B, C]
splitFunTyParts (X) = [X]