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

UntypedPlutusCore

Synopsis

Documentation

substVarA :: Applicative f => (name -> f (Maybe (Term name uni fun ann))) -> Term name uni fun ann -> f (Term name uni fun ann) Source #

Applicatively replace a variable using the given function.

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

Replace a variable using the given function.

termSubstNamesM :: Monad m => (name -> m (Maybe (Term name uni fun ann))) -> Term name uni fun ann -> m (Term name uni fun ann) Source #

Naively monadically substitute names using the given function (i.e. do not substitute binders).

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

Naively substitute names using the given function (i.e. do not substitute binders).

termSubstFreeNamesA :: (Applicative f, HasUnique name TermUnique) => (name -> f (Maybe (Term name uni fun ann))) -> Term name uni fun ann -> f (Term name uni fun ann) Source #

Applicatively substitute *free* names using the given function.

termSubstFreeNames :: HasUnique name TermUnique => (name -> Maybe (Term name uni fun ann)) -> Term name uni fun ann -> Term name uni fun ann Source #

Substitute *free* names using the given function.

termMapNames :: forall name name' uni fun ann. (name -> name') -> Term name uni fun ann -> Term name' uni fun ann Source #

Completely replace the names with a new name type.

programMapNames :: forall name name' uni fun ann. (name -> name') -> Program name uni fun ann -> Program name' uni fun ann Source #

uniquesTerm :: HasUniques (Term name uni fun ann) => Term name uni fun ann -> Set Unique Source #

Get all the uniques in a term

vTerm :: Ord name => Term name uni fun ann -> Set name Source #

Get all the term variables in a term.

termSize :: Term name uni fun ann -> Integer Source #

Count the number of AST nodes in a term.

programSize :: Program name uni fun ann -> Integer Source #

Count the number of AST nodes in a program.

serialisedSize :: Flat a => a -> Integer Source #

Compute the size of the serialized form of a value.

simplifyTerm :: forall uni fun m a. (ToBuiltinMeaning uni fun, MonadQuote m) => SimplifyOpts a -> Term Name uni fun a -> m (Term Name uni fun a) Source #

simplifyProgram :: forall uni fun m a. (ToBuiltinMeaning uni fun, MonadQuote m) => SimplifyOpts a -> Program Name uni fun a -> m (Program Name uni fun a) Source #

data SimplifyOpts a Source #

Instances

Instances details
Show (SimplifyOpts a) Source # 
Instance details

Defined in UntypedPlutusCore.Simplify

newtype InlineHints name a Source #

Constructors

InlineHints 

Fields

Instances

Instances details
Show (InlineHints name a) Source # 
Instance details

Defined in PlutusCore.InlineUtils

Methods

showsPrec :: Int -> InlineHints name a -> ShowS Source #

show :: InlineHints name a -> String Source #

showList :: [InlineHints name a] -> ShowS Source #

Semigroup (InlineHints name a) Source # 
Instance details

Defined in PlutusCore.InlineUtils

Methods

(<>) :: InlineHints name a -> InlineHints name a -> InlineHints name a Source #

sconcat :: NonEmpty (InlineHints name a) -> InlineHints name a Source #

stimes :: Integral b => b -> InlineHints name a -> InlineHints name a Source #

Monoid (InlineHints name a) Source # 
Instance details

Defined in PlutusCore.InlineUtils

Methods

mempty :: InlineHints name a Source #

mappend :: InlineHints name a -> InlineHints name a -> InlineHints name a Source #

mconcat :: [InlineHints name a] -> InlineHints name a Source #

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 #

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

(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 #

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

(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 #

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

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) 
Instance details

Defined in UntypedPlutusCore.Evaluation.Machine.Cek.Internal

Methods

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

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

(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 FakeNamedDeBruijn uni fun ann) Source # 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Eq

Methods

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

(/=) :: Term FakeNamedDeBruijn uni fun ann -> Term FakeNamedDeBruijn 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 #

(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 #

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

Corecursive (Term name uni fun ann) 
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

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

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

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

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

Recursive (Term name uni fun ann) 
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)

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

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

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

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

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

(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) 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Flat

Methods

encode :: Term name uni fun ann -> Encoding

decode :: Get (Term name uni fun ann)

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

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 #

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

Defined in UntypedPlutusCore.Core.Type

Methods

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

fromConstant :: Some (ValueOf (UniOf (Term name uni fun ()))) -> Term name uni fun () 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-1.0.0.1-6wMiyL0yerXJu56t8zBoKx" '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) 
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 #

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

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 #

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

(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 #

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

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 #

(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 #

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

(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) 
Instance details

Defined in UntypedPlutusCore.Core.Instance.Flat

Methods

encode :: Program name uni fun ann -> Encoding

decode :: Get (Program name uni fun ann)

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

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-1.0.0.1-6wMiyL0yerXJu56t8zBoKx" '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)

applyProgram :: Program name uni fun () -> Program name uni fun () -> Program name uni fun () Source #

Take one UPLC program and apply it to another.

parseScoped :: (MonadQuote (Either (ParseErrorBundle Text ParseError)), AsUniqueError (ParseErrorBundle Text ParseError) SourcePos) => ByteString -> Either (ParseErrorBundle Text ParseError) (Program Name DefaultUni DefaultFun SourcePos) Source #

Parse and rewrite so that names are globally unique, not just unique within their scope.

data DefaultUni a Source #

The universe used by default.

Instances

Instances details
HasUniApply DefaultUni Source # 
Instance details

Defined in PlutusCore.Default.Universe

Methods

matchUniApply :: DefaultUni tb -> r -> (forall k l (f :: k -> l) (a :: k). tb ~ Esc (f a) => DefaultUni (Esc f) -> DefaultUni (Esc a) -> r) -> r Source #

Closed DefaultUni Source # 
Instance details

Defined in PlutusCore.Default.Universe

Associated Types

type Everywhere DefaultUni constr Source #

Methods

encodeUni :: DefaultUni a -> [Int] Source #

withDecodedUni :: (forall k (a :: k). Typeable k => DefaultUni (Esc a) -> DecodeUniM r) -> DecodeUniM r Source #

bring :: Everywhere DefaultUni constr => proxy constr -> DefaultUni (Esc a) -> (constr a => r) -> r Source #

ToKind DefaultUni Source # 
Instance details

Defined in PlutusCore.Default.Universe

Methods

toSingKind :: forall k (a :: k). DefaultUni (Esc a) -> SingKind k Source #

TestTypesFromTheUniverseAreAllKnown DefaultUni Source # 
Instance details

Defined in PlutusCore.Default.Universe

GCompare DefaultUni Source # 
Instance details

Defined in PlutusCore.Default.Universe

Methods

gcompare :: forall (a :: k) (b :: k). DefaultUni a -> DefaultUni b -> GOrdering a b

GEq DefaultUni Source # 
Instance details

Defined in PlutusCore.Default.Universe

Methods

geq :: forall (a :: k) (b :: k). DefaultUni a -> DefaultUni b -> Maybe (a :~: b) #

GShow DefaultUni Source # 
Instance details

Defined in PlutusCore.Default.Universe

Methods

gshowsPrec :: forall (a :: k). Int -> DefaultUni a -> ShowS #

HasConstantIn DefaultUni term => ReadKnownIn DefaultUni term Int Source # 
Instance details

Defined in PlutusCore.Default.Universe

Methods

readKnown :: Maybe cause -> term -> ReadKnownM cause Int Source #

HasConstantIn DefaultUni term => ReadKnownIn DefaultUni term Int64 Source # 
Instance details

Defined in PlutusCore.Default.Universe

Methods

readKnown :: Maybe cause -> term -> ReadKnownM cause Int64 Source #

HasConstantIn DefaultUni term => ReadKnownIn DefaultUni term Data Source # 
Instance details

Defined in PlutusCore.Default.Universe

Methods

readKnown :: Maybe cause -> term -> ReadKnownM cause Data Source #

HasConstantIn DefaultUni term => ReadKnownIn DefaultUni term Bool Source # 
Instance details

Defined in PlutusCore.Default.Universe

Methods

readKnown :: Maybe cause -> term -> ReadKnownM cause Bool Source #

HasConstantIn DefaultUni term => ReadKnownIn DefaultUni term () Source # 
Instance details

Defined in PlutusCore.Default.Universe

Methods

readKnown :: Maybe cause -> term -> ReadKnownM cause () Source #

HasConstantIn DefaultUni term => ReadKnownIn DefaultUni term Text Source # 
Instance details

Defined in PlutusCore.Default.Universe

Methods

readKnown :: Maybe cause -> term -> ReadKnownM cause Text Source #

HasConstantIn DefaultUni term => ReadKnownIn DefaultUni term ByteString Source # 
Instance details

Defined in PlutusCore.Default.Universe

Methods

readKnown :: Maybe cause -> term -> ReadKnownM cause ByteString Source #

HasConstantIn DefaultUni term => ReadKnownIn DefaultUni term Integer Source # 
Instance details

Defined in PlutusCore.Default.Universe

Methods

readKnown :: Maybe cause -> term -> ReadKnownM cause Integer Source #

UniOf term ~ DefaultUni => ReadKnownIn DefaultUni term Void Source # 
Instance details

Defined in PlutusCore.Examples.Builtins

Methods

readKnown :: Maybe cause -> term -> ReadKnownM cause Void Source #

HasConstantIn DefaultUni term => MakeKnownIn DefaultUni term Int Source # 
Instance details

Defined in PlutusCore.Default.Universe

Methods

makeKnown :: Maybe cause -> Int -> MakeKnownM cause term Source #

HasConstantIn DefaultUni term => MakeKnownIn DefaultUni term Int64 Source # 
Instance details

Defined in PlutusCore.Default.Universe

Methods

makeKnown :: Maybe cause -> Int64 -> MakeKnownM cause term Source #

HasConstantIn DefaultUni term => MakeKnownIn DefaultUni term Data Source # 
Instance details

Defined in PlutusCore.Default.Universe

Methods

makeKnown :: Maybe cause -> Data -> MakeKnownM cause term Source #

HasConstantIn DefaultUni term => MakeKnownIn DefaultUni term Bool Source # 
Instance details

Defined in PlutusCore.Default.Universe

Methods

makeKnown :: Maybe cause -> Bool -> MakeKnownM cause term Source #

HasConstantIn DefaultUni term => MakeKnownIn DefaultUni term () Source # 
Instance details

Defined in PlutusCore.Default.Universe

Methods

makeKnown :: Maybe cause -> () -> MakeKnownM cause term Source #

HasConstantIn DefaultUni term => MakeKnownIn DefaultUni term Text Source # 
Instance details

Defined in PlutusCore.Default.Universe

Methods

makeKnown :: Maybe cause -> Text -> MakeKnownM cause term Source #

HasConstantIn DefaultUni term => MakeKnownIn DefaultUni term ByteString Source # 
Instance details

Defined in PlutusCore.Default.Universe

Methods

makeKnown :: Maybe cause -> ByteString -> MakeKnownM cause term Source #

HasConstantIn DefaultUni term => MakeKnownIn DefaultUni term Integer Source # 
Instance details

Defined in PlutusCore.Default.Universe

Methods

makeKnown :: Maybe cause -> Integer -> MakeKnownM cause term Source #

UniOf term ~ DefaultUni => MakeKnownIn DefaultUni term Void Source # 
Instance details

Defined in PlutusCore.Examples.Builtins

Methods

makeKnown :: Maybe cause -> Void -> MakeKnownM cause term Source #

(Contains DefaultUni f, Contains DefaultUni a) => Contains DefaultUni (f a :: k2) Source # 
Instance details

Defined in PlutusCore.Default.Universe

Methods

knownUni :: DefaultUni (Esc (f a)) Source #

(HasConstantIn DefaultUni term, Contains DefaultUni [a]) => ReadKnownIn DefaultUni term [a] Source # 
Instance details

Defined in PlutusCore.Default.Universe

Methods

readKnown :: Maybe cause -> term -> ReadKnownM cause [a] Source #

(HasConstantIn DefaultUni term, Contains DefaultUni [a]) => MakeKnownIn DefaultUni term [a] Source # 
Instance details

Defined in PlutusCore.Default.Universe

Methods

makeKnown :: Maybe cause -> [a] -> MakeKnownM cause term Source #

(HasConstantIn DefaultUni term, Contains DefaultUni (a, b)) => ReadKnownIn DefaultUni term (a, b) Source # 
Instance details

Defined in PlutusCore.Default.Universe

Methods

readKnown :: Maybe cause -> term -> ReadKnownM cause (a, b) Source #

(HasConstantIn DefaultUni term, Contains DefaultUni (a, b)) => MakeKnownIn DefaultUni term (a, b) Source # 
Instance details

Defined in PlutusCore.Default.Universe

Methods

makeKnown :: Maybe cause -> (a, b) -> MakeKnownM cause term Source #

Show (DefaultUni a) Source # 
Instance details

Defined in PlutusCore.Default.Universe

Contains DefaultUni Bool Source # 
Instance details

Defined in PlutusCore.Default.Universe

Contains DefaultUni Integer Source # 
Instance details

Defined in PlutusCore.Default.Universe

Contains DefaultUni () Source # 
Instance details

Defined in PlutusCore.Default.Universe

Methods

knownUni :: DefaultUni (Esc ()) Source #

Contains DefaultUni ByteString Source # 
Instance details

Defined in PlutusCore.Default.Universe

Methods

knownUni :: DefaultUni (Esc ByteString) Source #

Contains DefaultUni Text Source # 
Instance details

Defined in PlutusCore.Default.Universe

Methods

knownUni :: DefaultUni (Esc Text) Source #

Contains DefaultUni Data Source # 
Instance details

Defined in PlutusCore.Default.Universe

KnownBuiltinTypeAst DefaultUni Bool => KnownTypeAst DefaultUni Bool Source # 
Instance details

Defined in PlutusCore.Default.Universe

Associated Types

type ToHoles Bool :: [Hole] Source #

type ToBinds Bool :: [Some TyNameRep] Source #

Methods

toTypeAst :: proxy Bool -> Type TyName DefaultUni () Source #

KnownTypeAst DefaultUni Int Source # 
Instance details

Defined in PlutusCore.Default.Universe

Associated Types

type ToHoles Int :: [Hole] Source #

type ToBinds Int :: [Some TyNameRep] Source #

Methods

toTypeAst :: proxy Int -> Type TyName DefaultUni () Source #

KnownTypeAst DefaultUni Int64 Source # 
Instance details

Defined in PlutusCore.Default.Universe

Associated Types

type ToHoles Int64 :: [Hole] Source #

type ToBinds Int64 :: [Some TyNameRep] Source #

Methods

toTypeAst :: proxy Int64 -> Type TyName DefaultUni () Source #

KnownBuiltinTypeAst DefaultUni Integer => KnownTypeAst DefaultUni Integer Source # 
Instance details

Defined in PlutusCore.Default.Universe

Associated Types

type ToHoles Integer :: [Hole] Source #

type ToBinds Integer :: [Some TyNameRep] Source #

KnownBuiltinTypeAst DefaultUni () => KnownTypeAst DefaultUni () Source # 
Instance details

Defined in PlutusCore.Default.Universe

Associated Types

type ToHoles () :: [Hole] Source #

type ToBinds () :: [Some TyNameRep] Source #

Methods

toTypeAst :: proxy () -> Type TyName DefaultUni () Source #

KnownTypeAst DefaultUni Void Source # 
Instance details

Defined in PlutusCore.Examples.Builtins

Associated Types

type ToHoles Void :: [Hole] Source #

type ToBinds Void :: [Some TyNameRep] Source #

Methods

toTypeAst :: proxy Void -> Type TyName DefaultUni () Source #

KnownBuiltinTypeAst DefaultUni ByteString => KnownTypeAst DefaultUni ByteString Source # 
Instance details

Defined in PlutusCore.Default.Universe

Associated Types

type ToHoles ByteString :: [Hole] Source #

type ToBinds ByteString :: [Some TyNameRep] Source #

Methods

toTypeAst :: proxy ByteString -> Type TyName DefaultUni () Source #

KnownBuiltinTypeAst DefaultUni Text => KnownTypeAst DefaultUni Text Source # 
Instance details

Defined in PlutusCore.Default.Universe

Associated Types

type ToHoles Text :: [Hole] Source #

type ToBinds Text :: [Some TyNameRep] Source #

Methods

toTypeAst :: proxy Text -> Type TyName DefaultUni () Source #

KnownBuiltinTypeAst DefaultUni Data => KnownTypeAst DefaultUni Data Source # 
Instance details

Defined in PlutusCore.Default.Universe

Associated Types

type ToHoles Data :: [Hole] Source #

type ToBinds Data :: [Some TyNameRep] Source #

Methods

toTypeAst :: proxy Data -> Type TyName DefaultUni () Source #

KnownBuiltinTypeAst DefaultUni [a] => KnownTypeAst DefaultUni ([a] :: Type) Source # 
Instance details

Defined in PlutusCore.Default.Universe

Associated Types

type ToHoles [a] :: [Hole] Source #

type ToBinds [a] :: [Some TyNameRep] Source #

Methods

toTypeAst :: proxy [a] -> Type0 TyName DefaultUni () Source #

KnownBuiltinTypeAst DefaultUni (a, b) => KnownTypeAst DefaultUni ((a, b) :: Type) Source # 
Instance details

Defined in PlutusCore.Default.Universe

Associated Types

type ToHoles (a, b) :: [Hole] Source #

type ToBinds (a, b) :: [Some TyNameRep] Source #

Methods

toTypeAst :: proxy (a, b) -> Type0 TyName DefaultUni () Source #

Contains DefaultUni (,) Source # 
Instance details

Defined in PlutusCore.Default.Universe

Contains DefaultUni [] Source # 
Instance details

Defined in PlutusCore.Default.Universe

Methods

knownUni :: DefaultUni (Esc []) Source #

type Everywhere DefaultUni constr Source # 
Instance details

Defined in PlutusCore.Default.Universe

type Everywhere DefaultUni constr = (Permits constr Integer, Permits constr ByteString, Permits constr Text, Permits constr (), Permits constr Bool, Permits constr [], Permits constr (,), Permits constr Data)

data DefaultFun Source #

Default built-in functions.

When updating these, make sure to add them to the protocol version listing! See Note [New builtins and protocol versions]

Instances

Instances details
Bounded DefaultFun Source # 
Instance details

Defined in PlutusCore.Default.Builtins

Enum DefaultFun Source # 
Instance details

Defined in PlutusCore.Default.Builtins

Eq DefaultFun Source # 
Instance details

Defined in PlutusCore.Default.Builtins

Ord DefaultFun Source # 
Instance details

Defined in PlutusCore.Default.Builtins

Show DefaultFun Source # 
Instance details

Defined in PlutusCore.Default.Builtins

Ix DefaultFun Source # 
Instance details

Defined in PlutusCore.Default.Builtins

Generic DefaultFun Source # 
Instance details

Defined in PlutusCore.Default.Builtins

Associated Types

type Rep DefaultFun :: Type -> Type Source #

NFData DefaultFun Source # 
Instance details

Defined in PlutusCore.Default.Builtins

Methods

rnf :: DefaultFun -> () Source #

Hashable DefaultFun Source # 
Instance details

Defined in PlutusCore.Default.Builtins

Pretty DefaultFun Source # 
Instance details

Defined in PlutusCore.Default.Builtins

Methods

pretty :: DefaultFun -> Doc ann #

prettyList :: [DefaultFun] -> Doc ann #

ExMemoryUsage DefaultFun Source # 
Instance details

Defined in PlutusCore.Default.Builtins

Flat DefaultFun Source # 
Instance details

Defined in PlutusCore.Default.Builtins

Methods

encode :: DefaultFun -> Encoding

decode :: Get DefaultFun

size :: DefaultFun -> NumBits -> NumBits

PrettyBy PrettyConfigPlc DefaultFun Source # 
Instance details

Defined in PlutusCore.Default.Builtins

uni ~ DefaultUni => ToBuiltinMeaning uni DefaultFun Source # 
Instance details

Defined in PlutusCore.Default.Builtins

Associated Types

type CostingPart uni DefaultFun Source #

type Rep DefaultFun Source # 
Instance details

Defined in PlutusCore.Default.Builtins

type Rep DefaultFun = D1 ('MetaData "DefaultFun" "PlutusCore.Default.Builtins" "plutus-core-1.0.0.1-6wMiyL0yerXJu56t8zBoKx" 'False) (((((C1 ('MetaCons "AddInteger" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "SubtractInteger" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MultiplyInteger" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "DivideInteger" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "QuotientInteger" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "RemainderInteger" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "ModInteger" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "EqualsInteger" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LessThanInteger" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "LessThanEqualsInteger" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "AppendByteString" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ConsByteString" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "SliceByteString" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "LengthOfByteString" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "IndexByteString" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "EqualsByteString" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "LessThanByteString" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LessThanEqualsByteString" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Sha2_256" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Sha3_256" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "Blake2b_256" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "VerifyEd25519Signature" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "VerifyEcdsaSecp256k1Signature" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "VerifySchnorrSecp256k1Signature" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "AppendString" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "EqualsString" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "EncodeUtf8" 'PrefixI 'False) (U1 :: Type -> Type)))))) :+: ((((C1 ('MetaCons "DecodeUtf8" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "IfThenElse" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ChooseUnit" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "Trace" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "FstPair" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "SndPair" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "ChooseList" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "MkCons" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "HeadList" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "TailList" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NullList" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ChooseData" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ConstrData" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "MapData" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ListData" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "IData" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "BData" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "UnConstrData" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "UnMapData" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "UnListData" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "UnIData" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "UnBData" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "EqualsData" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "SerialiseData" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MkPairData" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "MkNilData" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MkNilPairData" 'PrefixI 'False) (U1 :: Type -> Type)))))))
type CostingPart uni DefaultFun Source # 
Instance details

Defined in PlutusCore.Default.Builtins