Safe Haskell | None |
---|---|
Language | Haskell2010 |
PlutusIR.Core.Type
Synopsis
- newtype TyName = TyName { }
-
data
Name
=
Name
{
- nameString :: Text
- nameUnique :: Unique
-
data
VarDecl
tyname name uni fun ann =
VarDecl
{
- _varDeclAnn :: ann
- _varDeclName :: name
- _varDeclType :: Type tyname uni ann
-
data
TyVarDecl
tyname ann =
TyVarDecl
{
- _tyVarDeclAnn :: ann
- _tyVarDeclName :: tyname
- _tyVarDeclKind :: Kind ann
- varDeclNameString :: VarDecl tyname Name uni fun a -> String
- tyVarDeclNameString :: TyVarDecl TyName a -> String
- 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 Datatype tyname name uni fun a = Datatype a ( TyVarDecl tyname a) [ TyVarDecl tyname a] name [ VarDecl tyname name uni fun a]
- datatypeNameString :: Datatype TyName Name uni fun a -> String
- data Recursivity
- data Strictness
-
data
Binding
tyname name uni fun a
- = TermBind a Strictness ( VarDecl tyname name uni fun a) ( Term tyname name uni fun a)
- | TypeBind a ( TyVarDecl tyname a) ( Type tyname uni a)
- | DatatypeBind a ( Datatype tyname name uni fun a)
-
data
Term
tyname name uni fun a
- = Let a Recursivity ( NonEmpty ( Binding tyname name uni fun a)) ( Term tyname name uni fun a)
- | Var a name
- | TyAbs a tyname ( Kind a) ( Term tyname name uni fun a)
- | LamAbs a name ( Type tyname uni a) ( Term tyname name uni fun a)
- | Apply a ( Term tyname name uni fun a) ( Term tyname name uni fun a)
- | Constant a ( Some ( ValueOf uni))
- | Builtin a fun
- | TyInst a ( Term tyname name uni fun a) ( Type tyname uni a)
- | Error a ( Type tyname uni a)
- | IWrap a ( Type tyname uni a) ( Type tyname uni a) ( Term tyname name uni fun a)
- | Unwrap a ( Term tyname name uni fun a)
- data Program tyname name uni fun ann = Program { }
- applyProgram :: Monoid a => Program tyname name uni fun a -> Program tyname name uni fun a -> Program tyname name uni fun a
- termAnn :: Term tyname name uni fun a -> a
- progAnn :: forall tyname name uni fun ann. Lens' ( Program tyname name uni fun ann) 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)
Documentation
We use a
newtype
to enforce separation between names used for types and
those used for terms.
Instances
Eq TyName Source # | |
Ord TyName Source # | |
Show TyName Source # | |
Generic TyName Source # | |
Hashable TyName Source # | |
NFData TyName Source # | |
Defined in PlutusCore.Name |
|
Flat TyName Source # | |
Wrapped TyName Source # | |
ToScopedName TyName Source # | |
Defined in PlutusCore.Check.Scoping Methods toScopedName :: TyName -> ScopedName Source # |
|
Lift TyName Source # | |
HasPrettyConfigName config => PrettyBy config TyName Source # | |
HasUnique TyName TypeUnique Source # | |
Defined in PlutusCore.Name |
|
tyname ~ TyName => Reference TyName ( Type tyname uni) Source # | |
Defined in PlutusCore.Core.Instance.Scoping Methods referenceVia :: ( forall name. ToScopedName name => name -> NameAnn ) -> TyName -> Type tyname uni NameAnn -> Type tyname uni 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 # |
|
tyname ~ TyName => Reference TyName ( Term tyname name uni fun) Source # | |
Defined in PlutusIR.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 # |
|
tyname ~ TyName => Reference TyName ( Binding tyname name uni fun) Source # | |
Defined in PlutusIR.Core.Instance.Scoping Methods referenceVia :: ( forall name0. ToScopedName name0 => name0 -> NameAnn ) -> TyName -> Binding tyname name uni fun NameAnn -> Binding tyname name uni fun NameAnn Source # |
|
tyname ~ TyName => Reference TyName ( Datatype tyname name uni fun) Source # |
Scoping for data types is hard, so we employ some extra paranoia and reference the provided
|
Defined in PlutusIR.Core.Instance.Scoping Methods referenceVia :: ( forall name0. ToScopedName name0 => name0 -> NameAnn ) -> TyName -> Datatype tyname name uni fun NameAnn -> Datatype tyname name uni fun NameAnn Source # |
|
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 # |
|
Flat ( Binder TyName ) Source # | |
( GEq uni, Eq ann) => Eq ( Type TyName uni ann) Source # | |
TermLike ( Term name uni fun) TyName name uni fun Source # | |
Defined in UntypedPlutusCore.Core.Type Methods var :: ann -> name -> Term name uni fun ann Source # tyAbs :: ann -> TyName -> Kind ann -> Term name uni fun ann -> Term name uni fun ann Source # lamAbs :: ann -> name -> Type TyName uni ann -> Term name uni fun ann -> Term name uni fun ann Source # apply :: ann -> Term name uni fun ann -> Term name uni fun ann -> Term name uni fun ann Source # constant :: ann -> Some ( ValueOf uni) -> Term name uni fun ann Source # builtin :: ann -> fun -> Term name uni fun ann Source # tyInst :: ann -> Term name uni fun ann -> Type TyName uni ann -> Term name uni fun ann Source # unwrap :: ann -> Term name uni fun ann -> Term name uni fun ann Source # iWrap :: ann -> Type TyName uni ann -> Type TyName uni ann -> Term name uni fun ann -> Term name uni fun ann Source # error :: ann -> Type TyName uni ann -> Term name uni fun ann Source # termLet :: ann -> TermDef ( Term name uni fun) TyName name uni fun ann -> Term name uni fun ann -> Term name uni fun ann Source # typeLet :: ann -> TypeDef TyName uni ann -> Term name uni fun ann -> Term name uni fun ann Source # |
|
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 # |
|
AsTypeError ( Error uni fun a) ( Term TyName Name uni fun ()) uni fun a Source # | |
Defined in PlutusIR.Error Methods _TypeError :: Prism' ( Error uni fun a) ( TypeError ( Term TyName Name uni fun ()) uni fun a) Source # _KindMismatch :: Prism' ( Error uni fun a) (a, Type TyName uni (), Kind (), Kind ()) Source # _TypeMismatch :: Prism' ( Error uni fun a) (a, Term TyName Name uni fun (), Type TyName uni (), Normalized ( Type TyName uni ())) Source # _FreeTypeVariableE :: Prism' ( Error uni fun a) (a, TyName ) Source # _FreeVariableE :: Prism' ( Error uni fun a) (a, Name ) Source # _UnknownBuiltinFunctionE :: Prism' ( Error uni fun a) (a, fun) Source # |
|
( GEq uni, Closed uni, Everywhere uni Eq , Eq fun, Eq ann) => Eq ( Term TyName Name uni fun ann) Source # | |
HasConstant ( Term TyName Name uni fun ()) Source # | |
Defined in PlutusCore.Builtin.HasConstant Methods asConstant :: AsUnliftingError err => Maybe cause -> Term TyName Name uni fun () -> Either ( ErrorWithCause err cause) ( Some ( ValueOf ( UniOf ( Term TyName Name uni fun ())))) Source # fromConstant :: Some ( ValueOf ( UniOf ( Term TyName Name uni fun ()))) -> Term TyName Name uni fun () Source # |
|
( Reference TyName t, Reference Name t) => Reference ( Binding TyName Name uni fun ann) t Source # | |
Defined in PlutusIR.Core.Instance.Scoping Methods referenceVia :: ( forall name. ToScopedName name => name -> NameAnn ) -> Binding TyName Name uni fun ann -> t NameAnn -> t NameAnn Source # |
|
( Reference TyName t, Reference Name t) => Reference ( Datatype TyName Name uni fun ann) t Source # | |
Defined in PlutusIR.Core.Instance.Scoping Methods referenceVia :: ( forall name. ToScopedName name => name -> NameAnn ) -> Datatype TyName Name uni fun ann -> t NameAnn -> t NameAnn Source # |
|
type Rep TyName Source # | |
Defined in PlutusCore.Name |
|
type Unwrapped TyName Source # | |
Defined in PlutusCore.Name |
A
Name
represents variables/names in Plutus Core.
Constructors
Name | |
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-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 TyVarDecl tyname ann Source #
A "type variable declaration", i.e. a name and a kind for a type variable.
Constructors
TyVarDecl | |
Fields
|
Instances
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 Datatype tyname name uni fun a Source #
Constructors
Datatype a ( TyVarDecl tyname a) [ TyVarDecl tyname a] name [ VarDecl tyname name uni fun a] |
Instances
tyname ~ TyName => Reference TyName ( Datatype tyname name uni fun) Source # |
Scoping for data types is hard, so we employ some extra paranoia and reference the provided
|
Defined in PlutusIR.Core.Instance.Scoping Methods referenceVia :: ( forall name0. ToScopedName name0 => name0 -> NameAnn ) -> TyName -> Datatype tyname name uni fun NameAnn -> Datatype tyname name uni fun NameAnn Source # |
|
( PrettyClassicBy configName tyname, PrettyClassicBy configName name, GShow uni, Everywhere uni PrettyConst , Pretty ann) => PrettyBy ( PrettyConfigClassic configName) ( Datatype tyname name uni fun ann) Source # | |
Defined in PlutusIR.Core.Instance.Pretty Methods prettyBy :: PrettyConfigClassic configName -> Datatype tyname name uni fun ann -> Doc ann0 Source # prettyListBy :: PrettyConfigClassic configName -> [ Datatype tyname name uni fun ann] -> Doc ann0 Source # |
|
Functor ( Datatype tyname name uni fun) Source # | |
(tyname ~ TyName , name ~ Name ) => CollectScopeInfo ( Datatype tyname name uni fun) Source # | |
Defined in PlutusIR.Core.Instance.Scoping Methods collectScopeInfo :: Datatype tyname name uni fun NameAnn -> ScopeErrorOrInfo Source # |
|
( Show a, Show tyname, Show name, GShow uni) => Show ( Datatype tyname name uni fun a) Source # | |
Generic ( Datatype tyname name uni fun a) Source # | |
Defined in PlutusIR.Core.Type |
|
( Closed uni, Everywhere uni Flat , Flat a, Flat tyname, Flat name, Flat fun) => Flat ( Datatype tyname name uni fun a) Source # | |
( PrettyClassic tyname, PrettyClassic name, GShow uni, Everywhere uni PrettyConst , Pretty ann) => Pretty ( Datatype tyname name uni fun ann) Source # | |
( Reference TyName t, Reference Name t) => Reference ( Datatype TyName Name uni fun ann) t Source # | |
Defined in PlutusIR.Core.Instance.Scoping Methods referenceVia :: ( forall name. ToScopedName name => name -> NameAnn ) -> Datatype TyName Name uni fun ann -> t NameAnn -> t NameAnn Source # |
|
type Rep ( Datatype tyname name uni fun a) Source # | |
Defined in PlutusIR.Core.Type
type
Rep
(
Datatype
tyname name uni fun a) =
D1
('
MetaData
"Datatype" "PlutusIR.Core.Type" "plutus-core-1.0.0.1-76bWF9ZEWyb4eDyjHx0kCS" '
False
) (
C1
('
MetaCons
"Datatype" '
PrefixI
'
False
) ((
S1
('
MetaSel
('
Nothing
::
Maybe
Symbol
) '
NoSourceUnpackedness
'
NoSourceStrictness
'
DecidedLazy
) (
Rec0
a)
:*:
S1
('
MetaSel
('
Nothing
::
Maybe
Symbol
) '
NoSourceUnpackedness
'
NoSourceStrictness
'
DecidedLazy
) (
Rec0
(
TyVarDecl
tyname a)))
:*:
(
S1
('
MetaSel
('
Nothing
::
Maybe
Symbol
) '
NoSourceUnpackedness
'
NoSourceStrictness
'
DecidedLazy
) (
Rec0
[
TyVarDecl
tyname a])
:*:
(
S1
('
MetaSel
('
Nothing
::
Maybe
Symbol
) '
NoSourceUnpackedness
'
NoSourceStrictness
'
DecidedLazy
) (
Rec0
name)
:*:
S1
('
MetaSel
('
Nothing
::
Maybe
Symbol
) '
NoSourceUnpackedness
'
NoSourceStrictness
'
DecidedLazy
) (
Rec0
[
VarDecl
tyname name uni fun a])))))
|
data Recursivity Source #
Each multi-let-group has to be marked with its scoping:
*
NonRec
: the identifiers introduced by this multi-let are only linearly-scoped, i.e. an identifier cannot refer to itself or later-introduced identifiers of the group.
*
Rec
: an identifiers introduced by this multi-let group can use all other multi-lets of the same group (including itself),
thus permitting (mutual) recursion.
Instances
data Strictness Source #
Instances
Eq Strictness Source # | |
Defined in PlutusIR.Core.Type Methods (==) :: Strictness -> Strictness -> Bool Source # (/=) :: Strictness -> Strictness -> Bool Source # |
|
Show Strictness Source # | |
Defined in PlutusIR.Core.Type |
|
Generic Strictness Source # | |
Defined in PlutusIR.Core.Type Methods from :: Strictness -> Rep Strictness x Source # to :: Rep Strictness x -> Strictness Source # |
|
Flat Strictness Source # | |
Defined in PlutusIR.Core.Instance.Flat |
|
PrettyBy ( PrettyConfigClassic configName) Strictness Source # | |
Defined in PlutusIR.Core.Instance.Pretty Methods prettyBy :: PrettyConfigClassic configName -> Strictness -> Doc ann Source # prettyListBy :: PrettyConfigClassic configName -> [ Strictness ] -> Doc ann Source # |
|
type Rep Strictness Source # | |
data Binding tyname name uni fun a Source #
Constructors
TermBind a Strictness ( VarDecl tyname name uni fun a) ( Term tyname name uni fun a) | |
TypeBind a ( TyVarDecl tyname a) ( Type tyname uni a) | |
DatatypeBind a ( Datatype tyname name uni fun a) |
Instances
tyname ~ TyName => Reference TyName ( Binding tyname name uni fun) Source # | |
Defined in PlutusIR.Core.Instance.Scoping Methods referenceVia :: ( forall name0. ToScopedName name0 => name0 -> NameAnn ) -> TyName -> Binding tyname name uni fun NameAnn -> Binding tyname name uni fun NameAnn Source # |
|
name ~ Name => Reference Name ( Binding tyname name uni fun) Source # |
Unlike other
|
Defined in PlutusIR.Core.Instance.Scoping Methods referenceVia :: ( forall name0. ToScopedName name0 => name0 -> NameAnn ) -> Name -> Binding tyname name uni fun NameAnn -> Binding tyname name uni fun NameAnn Source # |
|
( PrettyClassicBy configName tyname, PrettyClassicBy configName name, GShow uni, Closed uni, Everywhere uni PrettyConst , Pretty fun, Pretty ann) => PrettyBy ( PrettyConfigClassic configName) ( Binding tyname name uni fun ann) Source # | |
Defined in PlutusIR.Core.Instance.Pretty Methods prettyBy :: PrettyConfigClassic configName -> Binding tyname name uni fun ann -> Doc ann0 Source # prettyListBy :: PrettyConfigClassic configName -> [ Binding tyname name uni fun ann] -> Doc ann0 Source # |
|
Functor ( Binding tyname name uni fun) Source # | |
(tyname ~ TyName , name ~ Name ) => CollectScopeInfo ( Binding tyname name uni fun) Source # | |
Defined in PlutusIR.Core.Instance.Scoping Methods collectScopeInfo :: Binding tyname name uni fun NameAnn -> ScopeErrorOrInfo Source # |
|
( Everywhere uni Show , GShow uni, Closed uni, Show a, Show name, Show tyname, Show fun) => Show ( Binding tyname name uni fun a) Source # | |
Generic ( Binding tyname name uni fun a) Source # | |
( Closed uni, Everywhere uni Flat , Flat fun, Flat a, Flat tyname, Flat name) => Flat ( Binding tyname name uni fun a) Source # | |
( PrettyClassic tyname, PrettyClassic name, GShow uni, Closed uni, Everywhere uni PrettyConst , Pretty fun, Pretty ann) => Pretty ( Binding tyname name uni fun ann) Source # | |
( Reference TyName t, Reference Name t) => Reference ( Binding TyName Name uni fun ann) t Source # | |
Defined in PlutusIR.Core.Instance.Scoping Methods referenceVia :: ( forall name. ToScopedName name => name -> NameAnn ) -> Binding TyName Name uni fun ann -> t NameAnn -> t NameAnn Source # |
|
type Rep ( Binding tyname name uni fun a) Source # | |
Defined in PlutusIR.Core.Type
type
Rep
(
Binding
tyname name uni fun a) =
D1
('
MetaData
"Binding" "PlutusIR.Core.Type" "plutus-core-1.0.0.1-76bWF9ZEWyb4eDyjHx0kCS" '
False
) (
C1
('
MetaCons
"TermBind" '
PrefixI
'
False
) ((
S1
('
MetaSel
('
Nothing
::
Maybe
Symbol
) '
NoSourceUnpackedness
'
NoSourceStrictness
'
DecidedLazy
) (
Rec0
a)
:*:
S1
('
MetaSel
('
Nothing
::
Maybe
Symbol
) '
NoSourceUnpackedness
'
NoSourceStrictness
'
DecidedLazy
) (
Rec0
Strictness
))
:*:
(
S1
('
MetaSel
('
Nothing
::
Maybe
Symbol
) '
NoSourceUnpackedness
'
NoSourceStrictness
'
DecidedLazy
) (
Rec0
(
VarDecl
tyname name uni fun a))
:*:
S1
('
MetaSel
('
Nothing
::
Maybe
Symbol
) '
NoSourceUnpackedness
'
NoSourceStrictness
'
DecidedLazy
) (
Rec0
(
Term
tyname name uni fun a))))
:+:
(
C1
('
MetaCons
"TypeBind" '
PrefixI
'
False
) (
S1
('
MetaSel
('
Nothing
::
Maybe
Symbol
) '
NoSourceUnpackedness
'
NoSourceStrictness
'
DecidedLazy
) (
Rec0
a)
:*:
(
S1
('
MetaSel
('
Nothing
::
Maybe
Symbol
) '
NoSourceUnpackedness
'
NoSourceStrictness
'
DecidedLazy
) (
Rec0
(
TyVarDecl
tyname a))
:*:
S1
('
MetaSel
('
Nothing
::
Maybe
Symbol
) '
NoSourceUnpackedness
'
NoSourceStrictness
'
DecidedLazy
) (
Rec0
(
Type
tyname uni a))))
:+:
C1
('
MetaCons
"DatatypeBind" '
PrefixI
'
False
) (
S1
('
MetaSel
('
Nothing
::
Maybe
Symbol
) '
NoSourceUnpackedness
'
NoSourceStrictness
'
DecidedLazy
) (
Rec0
a)
:*:
S1
('
MetaSel
('
Nothing
::
Maybe
Symbol
) '
NoSourceUnpackedness
'
NoSourceStrictness
'
DecidedLazy
) (
Rec0
(
Datatype
tyname name uni fun a)))))
|
data Term tyname name uni fun a Source #
Constructors
Let a Recursivity ( NonEmpty ( Binding tyname name uni fun a)) ( Term tyname name uni fun a) | |
Var a name | |
TyAbs a tyname ( Kind a) ( Term tyname name uni fun a) | |
LamAbs a name ( Type tyname uni a) ( Term tyname name uni fun a) | |
Apply a ( Term tyname name uni fun a) ( Term tyname name uni fun a) | |
Constant a ( Some ( ValueOf uni)) | |
Builtin a fun | |
TyInst a ( Term tyname name uni fun a) ( Type tyname uni a) | |
Error a ( Type tyname uni a) | |
IWrap a ( Type tyname uni a) ( Type tyname uni a) ( Term tyname name uni fun a) | |
Unwrap a ( Term tyname name uni fun a) |
Instances
data Program tyname name uni fun ann Source #
Instances
( PrettyClassicBy configName tyname, PrettyClassicBy configName name, GShow uni, Closed uni, Everywhere uni PrettyConst , Pretty fun, Pretty ann) => PrettyBy ( PrettyConfigClassic configName) ( Program tyname name uni fun ann) Source # | |
Defined in PlutusIR.Core.Instance.Pretty Methods prettyBy :: PrettyConfigClassic configName -> Program tyname name uni fun ann -> Doc ann0 Source # prettyListBy :: PrettyConfigClassic configName -> [ Program tyname name uni fun ann] -> Doc ann0 Source # |
|
(tyname ~ TyName , name ~ Name ) => CollectScopeInfo ( Program tyname name uni fun) Source # | |
Defined in PlutusIR.Core.Instance.Scoping Methods collectScopeInfo :: Program tyname name uni fun NameAnn -> ScopeErrorOrInfo Source # |
|
(tyname ~ TyName , name ~ Name ) => EstablishScoping ( Program tyname name uni fun) Source # | |
Defined in PlutusIR.Core.Instance.Scoping |
|
Generic ( Program tyname name uni fun ann) Source # | |
Defined in PlutusIR.Core.Type |
|
( Closed uni, Everywhere uni Flat , Flat fun, Flat a, Flat tyname, Flat name) => Flat ( Program tyname name uni fun a) 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 ( Term tyname name uni fun ann) => Rename ( Program tyname name uni fun ann) Source # | |
Defined in PlutusIR.Transform.Rename |
|
type Rep ( Program tyname name uni fun ann) Source # | |
Defined in PlutusIR.Core.Type
type
Rep
(
Program
tyname name uni fun ann) =
D1
('
MetaData
"Program" "PlutusIR.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
"_progTerm") '
NoSourceUnpackedness
'
NoSourceStrictness
'
DecidedLazy
) (
Rec0
(
Term
tyname name uni fun ann))))
|
|
type HasUniques ( Program tyname name uni fun ann) Source # | |
Defined in PlutusIR.Core.Type |