| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
PlutusCore.Core
Contents
Synopsis
- data Kind ann
- data Type tyname uni 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)
- data Term tyname name uni fun ann
- = Var ann name
- | TyAbs ann tyname (Kind ann) (Term tyname name uni fun ann)
- | 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)
- | Constant ann (Some (ValueOf uni))
- | Builtin ann fun
- | TyInst ann (Term tyname name uni fun ann) (Type tyname uni ann)
- | Unwrap ann (Term tyname name uni fun ann)
- | IWrap ann (Type tyname uni ann) (Type tyname uni ann) (Term tyname name uni fun ann)
- | Error ann (Type tyname uni ann)
- data Version ann = Version ann Natural Natural Natural
- data Program tyname name uni fun ann = Program {}
- type family UniOf a :: Type -> Type
- newtype Normalized a = Normalized {
- unNormalized :: a
- data TyVarDecl tyname ann = TyVarDecl {
- _tyVarDeclAnn :: ann
- _tyVarDeclName :: tyname
- _tyVarDeclKind :: Kind ann
- data VarDecl tyname name uni fun ann = VarDecl {
- _varDeclAnn :: ann
- _varDeclName :: name
- _varDeclType :: Type tyname uni ann
- data TyDecl tyname uni ann = TyDecl {
- _tyDeclAnn :: ann
- _tyDeclType :: Type tyname uni ann
- _tyDeclKind :: Kind ann
- tyDeclVar :: TyVarDecl tyname ann -> TyDecl tyname uni ann
- type family HasUniques a :: Constraint
- newtype Binder name = Binder {
- unBinder :: name
- defaultVersion :: ann -> Version ann
- termAnn :: Term tyname name uni fun ann -> ann
- typeAnn :: Type tyname uni ann -> ann
- mapFun :: (fun -> fun') -> Term tyname name uni fun ann -> Term tyname name uni fun' ann
- tyVarDeclAnn :: forall tyname ann. Lens' (TyVarDecl tyname ann) ann
- tyVarDeclName :: forall tyname ann tyname. Lens (TyVarDecl tyname ann) (TyVarDecl tyname ann) tyname tyname
- tyVarDeclKind :: forall tyname ann. Lens' (TyVarDecl tyname ann) (Kind ann)
- varDeclAnn :: forall tyname name uni fun ann fun. Lens (VarDecl tyname name uni fun ann) (VarDecl tyname name uni fun ann) ann ann
- varDeclName :: forall tyname name uni fun ann name fun. Lens (VarDecl tyname name uni fun ann) (VarDecl tyname name uni fun ann) name name
- varDeclType :: forall tyname name uni fun ann tyname uni fun. Lens (VarDecl tyname name uni fun ann) (VarDecl tyname name uni fun ann) (Type tyname uni ann) (Type tyname uni ann)
- tyDeclAnn :: forall tyname uni ann. Lens' (TyDecl tyname uni ann) ann
- tyDeclType :: forall tyname uni ann tyname uni. Lens (TyDecl tyname uni ann) (TyDecl tyname uni ann) (Type tyname uni ann) (Type tyname uni ann)
- tyDeclKind :: forall tyname uni ann. Lens' (TyDecl tyname uni ann) (Kind ann)
- progAnn :: forall tyname name uni fun ann. Lens' (Program tyname name uni fun ann) ann
- progVer :: forall tyname name uni fun ann. Lens' (Program tyname name uni fun ann) (Version ann)
- progTerm :: forall 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)
- kindSubkinds :: Traversal' (Kind ann) (Kind ann)
- kindSubkindsDeep :: Fold (Kind ann) (Kind ann)
- tyVarDeclSubkinds :: Traversal' (TyVarDecl tyname a) (Kind a)
- typeTyBinds :: Traversal' (Type tyname uni ann) tyname
- typeTyVars :: Traversal' (Type tyname uni ann) tyname
- typeUniques :: HasUniques (Type tyname uni ann) => Traversal' (Type tyname uni ann) Unique
- typeSubkinds :: Traversal' (Type tyname uni ann) (Kind ann)
- typeSubtypes :: Traversal' (Type tyname uni ann) (Type tyname uni ann)
- typeSubtypesDeep :: Fold (Type tyname uni ann) (Type tyname uni ann)
- varDeclSubtypes :: Traversal' (VarDecl tyname name uni fun a) (Type tyname uni a)
- termTyBinds :: Traversal' (Term tyname name uni fun ann) tyname
- termBinds :: Traversal' (Term tyname name uni fun ann) name
- termVars :: Traversal' (Term tyname name uni fun ann) name
- termUniques :: HasUniques (Term tyname name uni fun ann) => Traversal' (Term tyname name uni fun ann) Unique
- termSubkinds :: Traversal' (Term tyname name uni fun ann) (Kind ann)
- termSubtypes :: Traversal' (Term tyname name uni fun ann) (Type tyname uni ann)
- termSubtypesDeep :: Fold (Term tyname name uni fun ann) (Type tyname uni ann)
- termSubterms :: Traversal' (Term tyname name uni fun ann) (Term tyname name uni fun ann)
- termSubtermsDeep :: Fold (Term tyname name uni fun ann) (Term tyname name uni fun ann)
- typeUniquesDeep :: HasUniques (Type tyname uni ann) => Fold (Type tyname uni ann) Unique
- termUniquesDeep :: HasUniques (Term tyname name uni fun ann) => Fold (Term tyname name uni fun ann) Unique
- data TermF (tyname :: Type) (name :: Type) (uni :: Type -> Type) (fun :: Type) (ann :: Type) r
- = VarF ann name
- | TyAbsF ann tyname (Kind ann) r
- | LamAbsF ann name (Type tyname uni ann) r
- | ApplyF ann r r
- | ConstantF ann (Some (ValueOf uni))
- | BuiltinF ann fun
- | TyInstF ann r (Type tyname uni ann)
- | UnwrapF ann r
- | IWrapF ann (Type tyname uni ann) (Type tyname uni ann) r
- | ErrorF ann (Type tyname uni ann)
- data TypeF (tyname :: Type) (uni :: Type -> Type) (ann :: Type) r
- = TyVarF ann tyname
- | TyFunF ann r r
- | TyIFixF ann r r
- | TyForallF ann tyname (Kind ann) r
- | TyBuiltinF ann (SomeTypeIn uni)
- | TyLamF ann tyname (Kind ann) r
- | TyAppF ann r r
- data KindF (ann :: Type) r
- = TypeF ann
- | KindArrowF ann r r
Documentation
Instances
data Type tyname uni ann Source #
A Type assigned to expressions.
Constructors
| TyVar ann tyname | |
| TyFun ann (Type tyname uni ann) (Type tyname uni ann) | |
| 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) | |
| TyBuiltin ann (SomeTypeIn uni) | Builtin type |
| TyLam ann tyname (Kind ann) (Type tyname uni ann) | |
| TyApp ann (Type tyname uni ann) (Type tyname uni ann) |
Instances
data Term tyname name uni fun ann Source #
Constructors
| Var ann name | a named variable |
| TyAbs ann tyname (Kind ann) (Term tyname name uni fun ann) | |
| 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) | |
| Constant ann (Some (ValueOf uni)) | a constant term |
| Builtin ann fun | |
| TyInst ann (Term tyname name uni fun ann) (Type tyname uni ann) | |
| Unwrap ann (Term tyname name uni fun ann) | |
| IWrap ann (Type tyname uni ann) (Type tyname uni ann) (Term tyname name uni fun ann) | |
| Error ann (Type tyname uni ann) |
Instances
| 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 # | |
| 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 # | |
| 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 Source # prettyListBy :: PrettyConfigPlc -> [Term tyname name uni fun ann] -> Doc ann0 Source # | |
| (PrettyReadableBy configName tyname, PrettyReadableBy configName name, GShow uni, Closed uni, Everywhere uni PrettyConst, 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 Source # prettyListBy :: PrettyConfigReadable configName -> [Term tyname name uni fun a] -> Doc ann Source # | |
| (PrettyClassicBy configName tyname, PrettyClassicBy configName name, GShow uni, Closed uni, Everywhere uni PrettyConst, 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 Source # prettyListBy :: PrettyConfigClassic configName -> [Term tyname name uni fun ann] -> Doc ann0 Source # | |
| AsTypeError (Error uni fun ann) (Term TyName Name uni fun ()) uni fun ann Source # | |
Defined in PlutusCore.Error Methods _TypeError :: Prism' (Error uni fun ann) (TypeError (Term TyName Name uni fun ()) uni fun ann) Source # _KindMismatch :: Prism' (Error uni fun ann) (ann, Type TyName uni (), Kind (), Kind ()) Source # _TypeMismatch :: Prism' (Error uni fun ann) (ann, Term TyName Name uni fun (), Type TyName uni (), Normalized (Type TyName uni ())) Source # _FreeTypeVariableE :: Prism' (Error uni fun ann) (ann, TyName) Source # _FreeVariableE :: Prism' (Error uni fun ann) (ann, Name) Source # _UnknownBuiltinFunctionE :: Prism' (Error uni fun ann) (ann, fun) Source # | |
| 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 # termLet :: ann -> TermDef (Term tyname name uni fun) tyname name uni fun 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 # | |
| (GEq uni, Closed uni, Everywhere uni Eq, Eq fun, Eq ann) => Eq (Term TyName Name uni fun ann) 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 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 # | |
| (Everywhere uni Show, GShow uni, Closed uni, Show ann, Show name, Show tyname, Show fun) => Show (Term tyname name uni fun ann) Source # | |
| Generic (Term tyname name uni fun ann) Source # | |
| (Everywhere uni NFData, Closed uni, NFData ann, NFData name, NFData tyname, NFData fun) => NFData (Term tyname name uni fun ann) Source # | |
Defined in PlutusCore.Core.Type | |
| (Closed uni, Everywhere uni Flat, Flat fun, Flat ann, Flat tyname, Flat name) => Flat (Term tyname name uni fun ann) Source # | |
| (PrettyClassic tyname, PrettyClassic name, GShow uni, Closed uni, Everywhere uni PrettyConst, Pretty fun, Pretty ann) => Pretty (Term tyname name uni fun ann) Source # | |
| Recursive (Term tyname name uni fun ann) Source # | |
Defined in PlutusCore.Core.Instance.Recursive Methods project :: Term tyname name uni fun ann -> Base (Term tyname name uni fun ann) (Term tyname name uni fun ann) Source # cata :: (Base (Term tyname name uni fun ann) a -> a) -> Term tyname name uni fun ann -> a Source # para :: (Base (Term tyname name uni fun ann) (Term tyname name uni fun ann, a) -> a) -> Term tyname name uni fun ann -> a Source # gpara :: (Corecursive (Term tyname name uni fun ann), Comonad w) => (forall b. Base (Term tyname name uni fun ann) (w b) -> w (Base (Term tyname name uni fun ann) b)) -> (Base (Term tyname name uni fun ann) (EnvT (Term tyname name uni fun ann) w a) -> a) -> Term tyname name uni fun ann -> a Source # prepro :: Corecursive (Term tyname name uni fun ann) => (forall b. Base (Term tyname name uni fun ann) b -> Base (Term tyname name uni fun ann) b) -> (Base (Term tyname name uni fun ann) a -> a) -> Term tyname name uni fun ann -> a Source # gprepro :: (Corecursive (Term tyname name uni fun ann), Comonad w) => (forall b. Base (Term tyname name uni fun ann) (w b) -> w (Base (Term tyname name uni fun ann) b)) -> (forall c. Base (Term tyname name uni fun ann) c -> Base (Term tyname name uni fun ann) c) -> (Base (Term tyname name uni fun ann) (w a) -> a) -> Term tyname name uni fun ann -> a Source # | |
| Corecursive (Term tyname name uni fun ann) Source # | |
Defined in PlutusCore.Core.Instance.Recursive Methods embed :: Base (Term tyname name uni fun ann) (Term tyname name uni fun ann) -> Term tyname name uni fun ann Source # ana :: (a -> Base (Term tyname name uni fun ann) a) -> a -> Term tyname name uni fun ann Source # apo :: (a -> Base (Term tyname name uni fun ann) (Either (Term tyname name uni fun ann) a)) -> a -> Term tyname name uni fun ann Source # postpro :: Recursive (Term tyname name uni fun ann) => (forall b. Base (Term tyname name uni fun ann) b -> Base (Term tyname name uni fun ann) b) -> (a -> Base (Term tyname name uni fun ann) a) -> a -> Term tyname name uni fun ann Source # gpostpro :: (Recursive (Term tyname name uni fun ann), Monad m) => (forall b. m (Base (Term tyname name uni fun ann) b) -> Base (Term tyname name uni fun ann) (m b)) -> (forall c. Base (Term tyname name uni fun ann) c -> Base (Term tyname name uni fun ann) c) -> (a -> Base (Term tyname name uni fun ann) (m a)) -> a -> Term tyname name uni fun ann Source # | |
| HasUniques (Term tyname name uni fun ann) => Rename (Term tyname name uni fun ann) Source # | |
Defined in PlutusCore.Rename | |
| HasConstant (Term TyName Name uni fun ()) Source # | |
Defined in PlutusCore.Builtin.HasConstant | |
| 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.0.0.1-AYZ1DL3hDMt58i5HNUtSdG" '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 "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 "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 "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 "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 "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 "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 "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 Base (Term tyname name uni fun ann) Source # | |
Defined in PlutusCore.Core.Instance.Recursive | |
| type UniOf (Term 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) | |
Version of Plutus Core to be used for the program.
Instances
data Program tyname name uni 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 Source # prettyListBy :: PrettyConfigPlc -> [Program tyname name uni fun ann] -> Doc ann0 Source # | |
| 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 Source # prettyListBy :: PrettyConfigReadable configName -> [Program tyname name uni fun a] -> Doc ann Source # | |
| (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 Source # prettyListBy :: PrettyConfigClassic configName -> [Program tyname name uni fun ann] -> Doc ann0 Source # | |
| 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 | |
| (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 # | |
| (Everywhere uni Show, GShow uni, Closed uni, Show ann, Show name, Show tyname, Show fun) => Show (Program tyname name uni fun ann) Source # | |
| Generic (Program tyname name uni fun ann) Source # | |
Defined in PlutusCore.Core.Type | |
| (Everywhere uni NFData, Closed uni, NFData ann, NFData name, NFData tyname, NFData fun) => NFData (Program tyname name uni fun ann) Source # | |
Defined in PlutusCore.Core.Type | |
| (Flat ann, Flat (Term tyname name uni fun ann)) => Flat (Program tyname name uni fun ann) Source # | |
| (PrettyClassic tyname, PrettyClassic name, GShow uni, Closed uni, Everywhere uni PrettyConst, Pretty fun, Pretty ann) => Pretty (Program tyname name uni fun ann) Source # | |
| HasUniques (Program tyname name uni fun ann) => Rename (Program tyname name uni fun ann) Source # | |
Defined in PlutusCore.Rename | |
| 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.0.0.1-AYZ1DL3hDMt58i5HNUtSdG" 'False) (C1 ('MetaCons "Program" 'PrefixI 'True) (S1 ('MetaSel ('Just "_progAnn") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ann) :*: (S1 ('MetaSel ('Just "_progVer") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Version ann)) :*: 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 | |
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 (CkValue uni fun) Source # | |
Defined in PlutusCore.Evaluation.Machine.Ck | |
| type UniOf (CekValue uni fun) 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 | |
| type UniOf (Term tyname name uni fun ann) Source # | |
Defined in PlutusIR.Core.Type | |
newtype Normalized a Source #
Constructors
| Normalized | |
Fields
| |
Instances
data TyVarDecl tyname ann Source #
A "type variable declaration", i.e. a name and a kind for a type variable.
Constructors
| TyVarDecl | |
Fields
| |
Instances
data VarDecl tyname name uni fun ann Source #
A "variable declaration", i.e. a name and a type for a variable.
Constructors
| VarDecl | |
Fields
| |
Instances
| tyname ~ TyName => Reference TyName (VarDecl tyname name uni fun) Source # | |
Defined in PlutusIR.Core.Instance.Scoping Methods referenceVia :: (forall name0. ToScopedName name0 => name0 -> NameAnn) -> TyName -> VarDecl tyname name uni fun NameAnn -> VarDecl tyname name uni fun NameAnn Source # | |
| (PrettyClassicBy configName tyname, PrettyClassicBy configName name, GShow uni, Everywhere uni PrettyConst, Pretty ann) => PrettyBy (PrettyConfigClassic configName) (VarDecl tyname name uni fun ann) Source # | |
Defined in PlutusIR.Core.Instance.Pretty Methods prettyBy :: PrettyConfigClassic configName -> VarDecl tyname name uni fun ann -> Doc ann0 Source # prettyListBy :: PrettyConfigClassic configName -> [VarDecl tyname name uni fun ann] -> Doc ann0 Source # | |
| Functor (VarDecl tyname name uni fun) Source # | |
| (tyname ~ TyName, name ~ Name) => CollectScopeInfo (VarDecl tyname name uni fun) Source # | |
Defined in PlutusIR.Core.Instance.Scoping Methods collectScopeInfo :: VarDecl tyname name uni fun NameAnn -> ScopeErrorOrInfo Source # | |
| (Show ann, Show name, Show tyname, GShow uni) => Show (VarDecl tyname name uni fun ann) Source # | |
| Generic (VarDecl tyname name uni fun ann) Source # | |
Defined in PlutusCore.Core.Type | |
| (Closed uni, Flat fun, Flat ann, Flat tyname, Flat name) => Flat (VarDecl tyname name uni fun ann) Source # | |
| (PrettyClassic tyname, PrettyClassic name, GShow uni, Everywhere uni PrettyConst, Pretty ann) => Pretty (VarDecl tyname name uni fun ann) Source # | |
| HasUnique name TermUnique => HasUnique (VarDecl tyname name uni fun ann) TermUnique Source # | |
Defined in PlutusCore.Core.Type | |
| Reference name t => Reference (VarDecl tyname name uni fun ann) t Source # | |
Defined in PlutusIR.Core.Instance.Scoping Methods referenceVia :: (forall name0. ToScopedName name0 => name0 -> NameAnn) -> VarDecl tyname name uni fun ann -> t NameAnn -> t NameAnn Source # | |
| type Rep (VarDecl tyname name uni fun ann) Source # | |
Defined in PlutusCore.Core.Type type Rep (VarDecl tyname name uni fun ann) = D1 ('MetaData "VarDecl" "PlutusCore.Core.Type" "plutus-core-1.0.0.1-AYZ1DL3hDMt58i5HNUtSdG" '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 TyDecl tyname uni ann Source #
A "type declaration", i.e. a kind for a type.
Constructors
| TyDecl | |
Fields
| |
Instances
| Functor (TyDecl tyname uni) Source # | |
| (Show ann, Show tyname, GShow uni) => Show (TyDecl tyname uni ann) Source # | |
| Generic (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.0.0.1-AYZ1DL3hDMt58i5HNUtSdG" '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))))) | |
type family HasUniques a :: Constraint 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) | |
| type HasUniques (Program tyname name uni fun ann) Source # | |
Defined in PlutusIR.Core.Type | |
| type HasUniques (Term tyname name uni fun ann) Source # | |
Defined in PlutusIR.Core.Type type HasUniques (Term tyname name uni fun ann) = (HasUnique tyname TypeUnique, HasUnique name TermUnique) | |
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
defaultVersion :: ann -> Version ann Source #
The default version of Plutus Core supported by this library.
Helper functions
mapFun :: (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.
tyVarDeclAnn :: forall tyname ann. Lens' (TyVarDecl tyname ann) ann Source #
tyVarDeclName :: forall tyname ann tyname. Lens (TyVarDecl tyname ann) (TyVarDecl tyname ann) tyname tyname Source #
varDeclAnn :: forall tyname name uni fun ann fun. Lens (VarDecl tyname name uni fun ann) (VarDecl tyname name uni fun ann) ann ann Source #
varDeclName :: forall tyname name uni fun ann name fun. Lens (VarDecl tyname name uni fun ann) (VarDecl tyname name uni fun ann) name name Source #
varDeclType :: forall tyname name uni fun ann tyname uni fun. Lens (VarDecl tyname name uni fun ann) (VarDecl tyname name uni fun ann) (Type tyname uni ann) (Type tyname uni ann) Source #
tyDeclType :: forall tyname uni ann tyname uni. Lens (TyDecl tyname uni ann) (TyDecl tyname uni ann) (Type tyname uni ann) (Type tyname uni ann) Source #
progVer :: forall tyname name uni fun ann. Lens' (Program tyname name uni fun ann) (Version ann) Source #
progTerm :: forall 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 #
kindSubkinds :: Traversal' (Kind ann) (Kind ann) Source #
tyVarDeclSubkinds :: Traversal' (TyVarDecl tyname a) (Kind a) Source #
typeTyBinds :: Traversal' (Type tyname uni ann) tyname Source #
Get all the direct child 'tyname a's of the given Type from binders.
typeTyVars :: Traversal' (Type tyname uni ann) tyname Source #
typeUniques :: HasUniques (Type tyname uni ann) => Traversal' (Type tyname uni ann) Unique Source #
typeSubkinds :: Traversal' (Type tyname uni ann) (Kind ann) Source #
typeSubtypes :: Traversal' (Type tyname uni ann) (Type tyname uni ann) Source #
varDeclSubtypes :: Traversal' (VarDecl tyname name uni fun a) (Type tyname uni a) Source #
termTyBinds :: Traversal' (Term tyname name uni fun ann) tyname Source #
termBinds :: Traversal' (Term tyname name uni fun ann) name Source #
termVars :: Traversal' (Term tyname name uni fun ann) name Source #
termUniques :: HasUniques (Term tyname name uni fun ann) => Traversal' (Term tyname name uni fun ann) Unique Source #
termSubkinds :: Traversal' (Term tyname name uni fun ann) (Kind ann) Source #
termSubtypes :: Traversal' (Term tyname name uni fun ann) (Type tyname uni ann) Source #
termSubterms :: Traversal' (Term tyname name uni fun ann) (Term tyname name uni fun ann) Source #
typeUniquesDeep :: HasUniques (Type tyname uni ann) => Fold (Type tyname uni ann) Unique Source #
termUniquesDeep :: HasUniques (Term tyname name uni fun ann) => Fold (Term tyname name uni fun ann) Unique Source #
Base functors
data TermF (tyname :: Type) (name :: Type) (uni :: Type -> Type) (fun :: Type) (ann :: Type) r Source #
Constructors
| VarF ann name | |
| TyAbsF ann tyname (Kind ann) r | |
| LamAbsF ann name (Type tyname uni ann) r | |
| ApplyF ann r r | |
| ConstantF ann (Some (ValueOf uni)) | |
| BuiltinF ann fun | |
| TyInstF ann r (Type tyname uni ann) | |
| UnwrapF ann r | |
| IWrapF ann (Type tyname uni ann) (Type tyname uni ann) r | |
| ErrorF ann (Type tyname uni ann) |
Instances
| Functor (TermF tyname name uni fun ann) Source # | |
| Foldable (TermF tyname name uni fun ann) Source # | |
Defined in PlutusCore.Core.Instance.Recursive Methods fold :: Monoid m => TermF tyname name uni fun ann m -> m Source # foldMap :: Monoid m => (a -> m) -> TermF tyname name uni fun ann a -> m Source # foldMap' :: Monoid m => (a -> m) -> TermF tyname name uni fun ann a -> m Source # foldr :: (a -> b -> b) -> b -> TermF tyname name uni fun ann a -> b Source # foldr' :: (a -> b -> b) -> b -> TermF tyname name uni fun ann a -> b Source # foldl :: (b -> a -> b) -> b -> TermF tyname name uni fun ann a -> b Source # foldl' :: (b -> a -> b) -> b -> TermF tyname name uni fun ann a -> b Source # foldr1 :: (a -> a -> a) -> TermF tyname name uni fun ann a -> a Source # foldl1 :: (a -> a -> a) -> TermF tyname name uni fun ann a -> a Source # toList :: TermF tyname name uni fun ann a -> [a] Source # null :: TermF tyname name uni fun ann a -> Bool Source # length :: TermF tyname name uni fun ann a -> Int Source # elem :: Eq a => a -> TermF tyname name uni fun ann a -> Bool Source # maximum :: Ord a => TermF tyname name uni fun ann a -> a Source # minimum :: Ord a => TermF tyname name uni fun ann a -> a Source # sum :: Num a => TermF tyname name uni fun ann a -> a Source # product :: Num a => TermF tyname name uni fun ann a -> a Source # | |
| Traversable (TermF tyname name uni fun ann) Source # | |
Defined in PlutusCore.Core.Instance.Recursive Methods traverse :: Applicative f => (a -> f b) -> TermF tyname name uni fun ann a -> f (TermF tyname name uni fun ann b) Source # sequenceA :: Applicative f => TermF tyname name uni fun ann (f a) -> f (TermF tyname name uni fun ann a) Source # mapM :: Monad m => (a -> m b) -> TermF tyname name uni fun ann a -> m (TermF tyname name uni fun ann b) Source # sequence :: Monad m => TermF tyname name uni fun ann (m a) -> m (TermF tyname name uni fun ann a) Source # | |
data TypeF (tyname :: Type) (uni :: Type -> Type) (ann :: Type) r Source #
Constructors
| TyVarF ann tyname | |
| TyFunF ann r r | |
| TyIFixF ann r r | |
| TyForallF ann tyname (Kind ann) r | |
| TyBuiltinF ann (SomeTypeIn uni) | |
| TyLamF ann tyname (Kind ann) r | |
| TyAppF ann r r |
Instances
| Functor (TypeF tyname uni ann) Source # | |
| Foldable (TypeF tyname uni ann) Source # | |
Defined in PlutusCore.Core.Instance.Recursive Methods fold :: Monoid m => TypeF tyname uni ann m -> m Source # foldMap :: Monoid m => (a -> m) -> TypeF tyname uni ann a -> m Source # foldMap' :: Monoid m => (a -> m) -> TypeF tyname uni ann a -> m Source # foldr :: (a -> b -> b) -> b -> TypeF tyname uni ann a -> b Source # foldr' :: (a -> b -> b) -> b -> TypeF tyname uni ann a -> b Source # foldl :: (b -> a -> b) -> b -> TypeF tyname uni ann a -> b Source # foldl' :: (b -> a -> b) -> b -> TypeF tyname uni ann a -> b Source # foldr1 :: (a -> a -> a) -> TypeF tyname uni ann a -> a Source # foldl1 :: (a -> a -> a) -> TypeF tyname uni ann a -> a Source # toList :: TypeF tyname uni ann a -> [a] Source # null :: TypeF tyname uni ann a -> Bool Source # length :: TypeF tyname uni ann a -> Int Source # elem :: Eq a => a -> TypeF tyname uni ann a -> Bool Source # maximum :: Ord a => TypeF tyname uni ann a -> a Source # minimum :: Ord a => TypeF tyname uni ann a -> a Source # | |
| Traversable (TypeF tyname uni ann) Source # | |
Defined in PlutusCore.Core.Instance.Recursive Methods traverse :: Applicative f => (a -> f b) -> TypeF tyname uni ann a -> f (TypeF tyname uni ann b) Source # sequenceA :: Applicative f => TypeF tyname uni ann (f a) -> f (TypeF tyname uni ann a) Source # mapM :: Monad m => (a -> m b) -> TypeF tyname uni ann a -> m (TypeF tyname uni ann b) Source # sequence :: Monad m => TypeF tyname uni ann (m a) -> m (TypeF tyname uni ann a) Source # | |
data KindF (ann :: Type) r Source #
Constructors
| TypeF ann | |
| KindArrowF ann r r |
Instances
| Functor (KindF ann) Source # | |
| Foldable (KindF ann) Source # | |
Defined in PlutusCore.Core.Instance.Recursive Methods fold :: Monoid m => KindF ann m -> m Source # foldMap :: Monoid m => (a -> m) -> KindF ann a -> m Source # foldMap' :: Monoid m => (a -> m) -> KindF ann a -> m Source # foldr :: (a -> b -> b) -> b -> KindF ann a -> b Source # foldr' :: (a -> b -> b) -> b -> KindF ann a -> b Source # foldl :: (b -> a -> b) -> b -> KindF ann a -> b Source # foldl' :: (b -> a -> b) -> b -> KindF ann a -> b Source # foldr1 :: (a -> a -> a) -> KindF ann a -> a Source # foldl1 :: (a -> a -> a) -> KindF ann a -> a Source # toList :: KindF ann a -> [a] Source # null :: KindF ann a -> Bool Source # length :: KindF ann a -> Int Source # elem :: Eq a => a -> KindF ann a -> Bool Source # maximum :: Ord a => KindF ann a -> a Source # minimum :: Ord a => KindF ann a -> a Source # | |
| Traversable (KindF ann) Source # | |
Defined in PlutusCore.Core.Instance.Recursive Methods traverse :: Applicative f => (a -> f b) -> KindF ann a -> f (KindF ann b) Source # sequenceA :: Applicative f => KindF ann (f a) -> f (KindF ann a) Source # mapM :: Monad m => (a -> m b) -> KindF ann a -> m (KindF ann b) Source # sequence :: Monad m => KindF ann (m a) -> m (KindF ann a) Source # | |