plutus-core-0.1.0.0: Language library for Plutus Core
Safe HaskellNone
LanguageHaskell2010

UntypedPlutusCore.Core.Type

Synopsis

Documentation

type family UniOf a :: Type -> Type Source #

Extract the universe from a type.

Instances

Instances details
type UniOf (Opaque val rep) Source # 
Instance details

Defined in PlutusCore.Builtin.Polymorphism

type UniOf (Opaque val rep) = UniOf val
type UniOf (CkValue uni fun) Source # 
Instance details

Defined in PlutusCore.Evaluation.Machine.Ck

type UniOf (CkValue uni fun) = uni
type UniOf (CekValue uni fun) Source # 
Instance details

Defined in UntypedPlutusCore.Evaluation.Machine.Cek.Internal

type UniOf (CekValue uni fun) = uni
type UniOf (Term name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Type

type UniOf (Term name uni fun ann) = uni
type UniOf (Term tyname name uni fun ann) Source # 
Instance details

Defined in PlutusCore.Core.Type

type UniOf (Term tyname name uni fun ann) = uni
type UniOf (Term tyname name uni fun ann) Source # 
Instance details

Defined in PlutusIR.Core.Type

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

data Version ann Source #

Version of Plutus Core to be used for the program.

Constructors

Version ann Natural Natural Natural 

Instances

Instances details
Functor Version Source # 
Instance details

Defined in PlutusCore.Core.Type

Methods

fmap :: (a -> b) -> Version a -> Version b Source #

(<$) :: a -> Version b -> Version a Source #

Eq ann => Eq (Version ann) Source # 
Instance details

Defined in PlutusCore.Core.Type

Methods

(==) :: Version ann -> Version ann -> Bool Source #

(/=) :: Version ann -> Version ann -> Bool Source #

Show ann => Show (Version ann) Source # 
Instance details

Defined in PlutusCore.Core.Type

Methods

showsPrec :: Int -> Version ann -> ShowS Source #

show :: Version ann -> String Source #

showList :: [Version ann] -> ShowS Source #

Generic (Version ann) Source # 
Instance details

Defined in PlutusCore.Core.Type

Associated Types

type Rep (Version ann) :: Type -> Type Source #

Methods

from :: Version ann -> Rep (Version ann) x Source #

to :: Rep (Version ann) x -> Version ann Source #

Hashable ann => Hashable (Version ann) Source # 
Instance details

Defined in PlutusCore.Core.Type

Methods

hashWithSalt :: Int -> Version ann -> Int Source #

hash :: Version ann -> Int Source #

NFData ann => NFData (Version ann) Source # 
Instance details

Defined in PlutusCore.Core.Type

Methods

rnf :: Version ann -> () Source #

Flat ann => Flat (Version ann) Source # 
Instance details

Defined in PlutusCore.Flat

Pretty (Version ann) Source # 
Instance details

Defined in PlutusCore.Core.Instance.Pretty.Common

Methods

pretty :: Version ann -> Doc ann0 Source #

prettyList :: [Version ann] -> Doc ann0 Source #

type Rep (Version ann) Source # 
Instance details

Defined in PlutusCore.Core.Type

newtype Binder name Source #

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

Constructors

Binder 

Fields

data Term name uni fun ann Source #

The type of Untyped Plutus Core terms. Mirrors the type of Typed Plutus Core terms except

  1. all types are removed
  2. IWrap and Unwrap are removed
  3. type abstractions are replaced with Delay
  4. type instantiations are replaced with Force

The latter two are due to the fact that we don't have value restriction in Typed Plutus Core and hence a computation can be stuck expecting only a single type argument for the computation to become unstuck. Therefore we can't just silently remove type abstractions and instantiations and need to replace them with something else that also blocks evaluation (in order for the semantics of an erased program to match with the semantics of the original typed one). Delay and Force serve exactly this purpose.

Constructors

Var !ann !name 
LamAbs !ann !name !(Term name uni fun ann) 
Apply !ann !(Term name uni fun ann) !(Term name uni fun ann) 
Force !ann !(Term name uni fun ann) 
Delay !ann !(Term name uni fun ann) 
Constant !ann !(Some (ValueOf uni)) 
Builtin !ann !fun 
Error !ann 

Instances

Instances details
DefaultPrettyPlcStrategy (Term name uni fun ann) => PrettyBy PrettyConfigPlc (Term name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Pretty.Plc

Methods

prettyBy :: PrettyConfigPlc -> Term name uni fun ann -> Doc ann0 Source #

prettyListBy :: PrettyConfigPlc -> [Term name uni fun ann] -> Doc ann0 Source #

(PrettyReadableBy configName name, GShow uni, Closed uni, Everywhere uni PrettyConst, Pretty fun) => PrettyBy (PrettyConfigReadable configName) (Term name uni fun a) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Pretty.Readable

Methods

prettyBy :: PrettyConfigReadable configName -> Term name uni fun a -> Doc ann Source #

prettyListBy :: PrettyConfigReadable configName -> [Term name uni fun a] -> Doc ann Source #

(PrettyClassicBy configName name, GShow uni, Closed uni, Everywhere uni PrettyConst, Pretty fun, Pretty ann) => PrettyBy (PrettyConfigClassic configName) (Term name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Pretty.Classic

Methods

prettyBy :: PrettyConfigClassic configName -> Term name uni fun ann -> Doc ann0 Source #

prettyListBy :: PrettyConfigClassic configName -> [Term name uni fun ann] -> Doc ann0 Source #

(Closed uni, Everywhere uni Flat, PrettyPlc (Term name uni fun ann), Flat fun, Flat ann, Flat name, Flat (Binder name), KnownNat n) => Flat (WithSizeLimits n (Term name uni fun ann)) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Flat

Methods

encode :: WithSizeLimits n (Term name uni fun ann) -> Encoding Source #

decode :: Get (WithSizeLimits n (Term name uni fun ann)) Source #

size :: WithSizeLimits n (Term name uni fun ann) -> NumBits -> NumBits Source #

Functor (Term name uni fun) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Type

Methods

fmap :: (a -> b) -> Term name uni fun a -> Term name uni fun b Source #

(<$) :: a -> Term name uni fun b -> Term name uni fun a Source #

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

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 #

PrettyUni uni fun => MonadError (CekEvaluationException NamedDeBruijn uni fun) (CekM uni fun s) Source # 
Instance details

Defined in UntypedPlutusCore.Evaluation.Machine.Cek.Internal

Methods

throwError :: CekEvaluationException NamedDeBruijn uni fun -> CekM uni fun s a Source #

catchError :: CekM uni fun s a -> (CekEvaluationException NamedDeBruijn uni fun -> CekM uni fun s a) -> CekM uni fun s a Source #

(GEq uni, Closed uni, Everywhere uni Eq, Eq fun, Eq ann) => Eq (Term Name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Eq

Methods

(==) :: Term Name uni fun ann -> Term Name uni fun ann -> Bool Source #

(/=) :: Term Name uni fun ann -> Term Name uni fun ann -> Bool Source #

(GEq uni, Closed uni, Everywhere uni Eq, Eq fun, Eq ann) => Eq (Term DeBruijn uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Eq

Methods

(==) :: Term DeBruijn uni fun ann -> Term DeBruijn uni fun ann -> Bool Source #

(/=) :: Term DeBruijn uni fun ann -> Term DeBruijn uni fun ann -> Bool Source #

(GEq uni, Closed uni, Everywhere uni Eq, Eq fun, Eq ann) => Eq (Term NamedDeBruijn uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Eq

Methods

(==) :: Term NamedDeBruijn uni fun ann -> Term NamedDeBruijn uni fun ann -> Bool Source #

(/=) :: Term NamedDeBruijn uni fun ann -> Term NamedDeBruijn uni fun ann -> Bool Source #

(Everywhere uni Show, GShow uni, Closed uni, Show ann, Show name, Show fun) => Show (Term name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Type

Methods

showsPrec :: Int -> Term name uni fun ann -> ShowS Source #

show :: Term name uni fun ann -> String Source #

showList :: [Term name uni fun ann] -> ShowS Source #

Generic (Term name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Type

Associated Types

type Rep (Term name uni fun ann) :: Type -> Type Source #

Methods

from :: Term name uni fun ann -> Rep (Term name uni fun ann) x Source #

to :: Rep (Term name uni fun ann) x -> Term name uni fun ann Source #

(Everywhere uni NFData, Closed uni, NFData ann, NFData name, NFData fun) => NFData (Term name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Type

Methods

rnf :: Term name uni fun ann -> () Source #

(Closed uni, Everywhere uni Flat, PrettyPlc (Term name uni fun ann), Flat fun, Flat ann, Flat name, Flat (Binder name)) => Flat (Term name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Flat

Methods

encode :: Term name uni fun ann -> Encoding Source #

decode :: Get (Term name uni fun ann) Source #

size :: Term name uni fun ann -> NumBits -> NumBits Source #

(PrettyClassic name, GShow uni, Closed uni, Everywhere uni PrettyConst, Pretty fun, Pretty ann) => Pretty (Term name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Pretty.Default

Methods

pretty :: Term name uni fun ann -> Doc ann0 Source #

prettyList :: [Term name uni fun ann] -> Doc ann0 Source #

Recursive (Term name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Recursive

Methods

project :: Term name uni fun ann -> Base (Term name uni fun ann) (Term name uni fun ann) Source #

cata :: (Base (Term name uni fun ann) a -> a) -> Term name uni fun ann -> a Source #

para :: (Base (Term name uni fun ann) (Term name uni fun ann, a) -> a) -> Term name uni fun ann -> a Source #

gpara :: (Corecursive (Term name uni fun ann), Comonad w) => (forall b. Base (Term name uni fun ann) (w b) -> w (Base (Term name uni fun ann) b)) -> (Base (Term name uni fun ann) (EnvT (Term name uni fun ann) w a) -> a) -> Term name uni fun ann -> a Source #

prepro :: Corecursive (Term name uni fun ann) => (forall b. Base (Term name uni fun ann) b -> Base (Term name uni fun ann) b) -> (Base (Term name uni fun ann) a -> a) -> Term name uni fun ann -> a Source #

gprepro :: (Corecursive (Term name uni fun ann), Comonad w) => (forall b. Base (Term name uni fun ann) (w b) -> w (Base (Term name uni fun ann) b)) -> (forall c. Base (Term name uni fun ann) c -> Base (Term name uni fun ann) c) -> (Base (Term name uni fun ann) (w a) -> a) -> Term name uni fun ann -> a Source #

Corecursive (Term name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Recursive

Methods

embed :: Base (Term name uni fun ann) (Term name uni fun ann) -> Term name uni fun ann Source #

ana :: (a -> Base (Term name uni fun ann) a) -> a -> Term name uni fun ann Source #

apo :: (a -> Base (Term name uni fun ann) (Either (Term name uni fun ann) a)) -> a -> Term name uni fun ann Source #

postpro :: Recursive (Term name uni fun ann) => (forall b. Base (Term name uni fun ann) b -> Base (Term name uni fun ann) b) -> (a -> Base (Term name uni fun ann) a) -> a -> Term name uni fun ann Source #

gpostpro :: (Recursive (Term name uni fun ann), Monad m) => (forall b. m (Base (Term name uni fun ann) b) -> Base (Term name uni fun ann) (m b)) -> (forall c. Base (Term name uni fun ann) c -> Base (Term name uni fun ann) c) -> (a -> Base (Term name uni fun ann) (m a)) -> a -> Term name uni fun ann Source #

HasUniques (Term name uni fun ann) => Rename (Term name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Rename

Methods

rename :: MonadQuote m => Term name uni fun ann -> m (Term name uni fun ann) Source #

FromConstant (Term name uni fun ()) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Type

Methods

fromConstant :: Some (ValueOf (UniOf (Term name uni fun ()))) -> Term name uni fun () Source #

AsConstant (Term name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Type

Methods

asConstant :: (MonadError (ErrorWithCause err cause) m, AsUnliftingError err) => Maybe cause -> Term name uni fun ann -> m (Some (ValueOf (UniOf (Term name uni fun ann)))) Source #

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

Defined in UntypedPlutusCore.Core.Type

type Rep (Term name uni fun ann) = D1 ('MetaData "Term" "UntypedPlutusCore.Core.Type" "plutus-core-0.1.0.0-75cTOscXcmAHq1cwUst1Y0" 'False) (((C1 ('MetaCons "Var" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ann) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 name)) :+: C1 ('MetaCons "LamAbs" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ann) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 name) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Term name uni fun ann))))) :+: (C1 ('MetaCons "Apply" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ann) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Term name uni fun ann)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Term name uni fun ann)))) :+: C1 ('MetaCons "Force" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ann) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Term name uni fun ann))))) :+: ((C1 ('MetaCons "Delay" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ann) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Term name uni fun ann))) :+: C1 ('MetaCons "Constant" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ann) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Some (ValueOf uni))))) :+: (C1 ('MetaCons "Builtin" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ann) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 fun)) :+: C1 ('MetaCons "Error" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ann)))))
type Base (Term name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Recursive

type Base (Term name uni fun ann) = TermF name uni fun ann
type UniOf (Term name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Type

type UniOf (Term name uni fun ann) = uni
type HasUniques (Term name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Type

type HasUniques (Term name uni fun ann) = HasUnique name TermUnique

data Program name uni fun ann Source #

A Program is simply a Term coupled with a Version of the core language.

Constructors

Program 

Fields

Instances

Instances details
DefaultPrettyPlcStrategy (Program name uni fun ann) => PrettyBy PrettyConfigPlc (Program name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Pretty.Plc

Methods

prettyBy :: PrettyConfigPlc -> Program name uni fun ann -> Doc ann0 Source #

prettyListBy :: PrettyConfigPlc -> [Program name uni fun ann] -> Doc ann0 Source #

PrettyReadableBy configName (Term name uni fun a) => PrettyBy (PrettyConfigReadable configName) (Program name uni fun a) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Pretty.Readable

Methods

prettyBy :: PrettyConfigReadable configName -> Program name uni fun a -> Doc ann Source #

prettyListBy :: PrettyConfigReadable configName -> [Program name uni fun a] -> Doc ann Source #

(PrettyClassicBy configName (Term name uni fun ann), Pretty ann) => PrettyBy (PrettyConfigClassic configName) (Program name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Pretty.Classic

Methods

prettyBy :: PrettyConfigClassic configName -> Program name uni fun ann -> Doc ann0 Source #

prettyListBy :: PrettyConfigClassic configName -> [Program name uni fun ann] -> Doc ann0 Source #

(Closed uni, Everywhere uni Flat, PrettyPlc (Term name uni fun ann), Flat fun, Flat ann, Flat name, Flat (Binder name), KnownNat n) => Flat (WithSizeLimits n (Program name uni fun ann)) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Flat

Methods

encode :: WithSizeLimits n (Program name uni fun ann) -> Encoding Source #

decode :: Get (WithSizeLimits n (Program name uni fun ann)) Source #

size :: WithSizeLimits n (Program name uni fun ann) -> NumBits -> NumBits Source #

Functor (Program name uni fun) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Type

Methods

fmap :: (a -> b) -> Program name uni fun a -> Program name uni fun b Source #

(<$) :: a -> Program name uni fun b -> Program name uni fun a Source #

(GEq uni, Closed uni, Everywhere uni Eq, Eq fun, Eq ann, Eq (Term name uni fun ann)) => Eq (Program name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Eq

Methods

(==) :: Program name uni fun ann -> Program name uni fun ann -> Bool Source #

(/=) :: Program name uni fun ann -> Program name uni fun ann -> Bool Source #

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

Defined in UntypedPlutusCore.Core.Type

Methods

showsPrec :: Int -> Program name uni fun ann -> ShowS Source #

show :: Program name uni fun ann -> String Source #

showList :: [Program name uni fun ann] -> ShowS Source #

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

Defined in UntypedPlutusCore.Core.Type

Associated Types

type Rep (Program name uni fun ann) :: Type -> Type Source #

Methods

from :: Program name uni fun ann -> Rep (Program name uni fun ann) x Source #

to :: Rep (Program name uni fun ann) x -> Program name uni fun ann Source #

(Everywhere uni NFData, Closed uni, NFData ann, NFData name, NFData fun) => NFData (Program name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Type

Methods

rnf :: Program name uni fun ann -> () Source #

(Closed uni, Everywhere uni Flat, PrettyPlc (Term name uni fun ann), Flat fun, Flat ann, Flat name, Flat (Binder name)) => Flat (Program name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Flat

Methods

encode :: Program name uni fun ann -> Encoding Source #

decode :: Get (Program name uni fun ann) Source #

size :: Program name uni fun ann -> NumBits -> NumBits Source #

(PrettyClassic name, GShow uni, Closed uni, Everywhere uni PrettyConst, Pretty fun, Pretty ann) => Pretty (Program name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Pretty.Default

Methods

pretty :: Program name uni fun ann -> Doc ann0 Source #

prettyList :: [Program name uni fun ann] -> Doc ann0 Source #

HasUniques (Program name uni fun ann) => Rename (Program name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Rename

Methods

rename :: MonadQuote m => Program name uni fun ann -> m (Program name uni fun ann) Source #

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

Defined in UntypedPlutusCore.Core.Type

type Rep (Program name uni fun ann) = D1 ('MetaData "Program" "UntypedPlutusCore.Core.Type" "plutus-core-0.1.0.0-75cTOscXcmAHq1cwUst1Y0" '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 name uni fun ann)))))
type HasUniques (Program name uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Type

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

progAnn :: forall name uni fun ann. Lens' (Program name uni fun ann) ann Source #

progVer :: forall name uni fun ann. Lens' (Program name uni fun ann) (Version ann) Source #

progTerm :: forall name uni fun ann name uni fun. Lens (Program name uni fun ann) (Program name uni fun ann) (Term name uni fun ann) (Term name uni fun ann) Source #

bindFunM :: Monad m => (ann -> fun -> m (Term name uni fun' ann)) -> Term name uni fun ann -> m (Term name uni fun' ann) Source #

bindFun :: (ann -> fun -> Term name uni fun' ann) -> Term name uni fun ann -> Term name uni fun' ann Source #

mapFun :: (ann -> fun -> fun') -> Term name uni fun ann -> Term name uni fun' ann Source #

termAnn :: Term name uni fun ann -> ann Source #

Return the outermost annotation of a Term.

erase :: Term tyname name uni fun ann -> Term name uni fun ann Source #

Erase a Typed Plutus Core term to its untyped counterpart.

eraseProgram :: Program tyname name uni fun ann -> Program name uni fun ann Source #

Erase a Typed Plutus Core Program to its untyped counterpart.

data UVarDecl name ann Source #

An untyped "variable declaration", i.e. a name for a variable.

Constructors

UVarDecl 

Fields

Instances

Instances details
Functor (UVarDecl name) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Type

Methods

fmap :: (a -> b) -> UVarDecl name a -> UVarDecl name b Source #

(<$) :: a -> UVarDecl name b -> UVarDecl name a Source #

(Show ann, Show name) => Show (UVarDecl name ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Type

Methods

showsPrec :: Int -> UVarDecl name ann -> ShowS Source #

show :: UVarDecl name ann -> String Source #

showList :: [UVarDecl name ann] -> ShowS Source #

Generic (UVarDecl name ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Type

Associated Types

type Rep (UVarDecl name ann) :: Type -> Type Source #

Methods

from :: UVarDecl name ann -> Rep (UVarDecl name ann) x Source #

to :: Rep (UVarDecl name ann) x -> UVarDecl name ann Source #

type Rep (UVarDecl name ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Type

type Rep (UVarDecl name ann) = D1 ('MetaData "UVarDecl" "UntypedPlutusCore.Core.Type" "plutus-core-0.1.0.0-75cTOscXcmAHq1cwUst1Y0" 'False) (C1 ('MetaCons "UVarDecl" 'PrefixI 'True) (S1 ('MetaSel ('Just "_uvarDeclAnn") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ann) :*: S1 ('MetaSel ('Just "_uvarDeclName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 name)))

uvarDeclName :: forall name ann name. Lens (UVarDecl name ann) (UVarDecl name ann) name name Source #

uvarDeclAnn :: forall name ann ann. Lens (UVarDecl name ann) (UVarDecl name ann) ann ann Source #