Safe Haskell | None |
---|---|
Language | Haskell2010 |
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 k (fun :: k) ann k (fun :: k). Lens ( VarDecl tyname name uni (fun :: k) ann) ( VarDecl tyname name uni (fun :: k) ann) ann ann
- varDeclName :: forall tyname name uni k (fun :: k) ann name k (fun :: k). Lens ( VarDecl tyname name uni (fun :: k) ann) ( VarDecl tyname name uni (fun :: k) ann) name name
- varDeclType :: forall tyname name uni k (fun :: k) ann tyname uni k (fun :: k). Lens ( VarDecl tyname name uni (fun :: k) ann) ( VarDecl tyname name uni (fun :: k) 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.
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 #
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 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 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 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 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 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 _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 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 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 (==) :: 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 (==) :: 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 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 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-76bWF9ZEWyb4eDyjHx0kCS" '
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 #
Instances
DefaultPrettyPlcStrategy ( Program tyname name uni fun ann) => PrettyBy PrettyConfigPlc ( Program tyname name uni fun ann) Source # | |
Defined in PlutusCore.Core.Instance.Pretty.Plc 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 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 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 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 # | |
( 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-76bWF9ZEWyb4eDyjHx0kCS" '
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 #
Normalized | |
|
Instances
data TyVarDecl tyname ann Source #
A "type variable declaration", i.e. a name and a kind for a type variable.
TyVarDecl | |
|
Instances
data VarDecl tyname name uni fun ann Source #
A "variable declaration", i.e. a name and a type for a variable.
VarDecl | |
|
Instances
tyname ~ TyName => Reference TyName ( VarDecl tyname name uni fun) Source # | |
Defined in PlutusIR.Core.Instance.Scoping 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 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 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 # | |
( 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 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-76bWF9ZEWyb4eDyjHx0kCS" '
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.
TyDecl | |
|
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-76bWF9ZEWyb4eDyjHx0kCS" '
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
Instances
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 k (fun :: k) ann k (fun :: k). Lens ( VarDecl tyname name uni (fun :: k) ann) ( VarDecl tyname name uni (fun :: k) ann) ann ann Source #
varDeclName :: forall tyname name uni k (fun :: k) ann name k (fun :: k). Lens ( VarDecl tyname name uni (fun :: k) ann) ( VarDecl tyname name uni (fun :: k) ann) name name Source #
varDeclType :: forall tyname name uni k (fun :: k) ann tyname uni k (fun :: k). Lens ( VarDecl tyname name uni (fun :: k) ann) ( VarDecl tyname name uni (fun :: k) 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 #
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 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 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 #
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 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 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 #
TypeF ann | |
KindArrowF ann r r |
Instances
Functor ( KindF ann) Source # | |
Foldable ( KindF ann) Source # | |
Defined in PlutusCore.Core.Instance.Recursive 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 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 # |