Safe Haskell | None |
---|---|
Language | Haskell2010 |
UntypedPlutusCore
Contents
Synopsis
- substVarA :: Applicative f => (name -> f (Maybe (Term name uni fun ann))) -> Term name uni fun ann -> f (Term name uni fun ann)
- substVar :: (name -> Maybe (Term name uni fun ann)) -> Term name uni fun ann -> Term name uni fun ann
- termSubstNamesM :: Monad m => (name -> m (Maybe (Term name uni fun ann))) -> Term name uni fun ann -> m (Term name uni fun ann)
- termSubstNames :: (name -> Maybe (Term name uni fun ann)) -> Term name uni fun ann -> Term name uni fun ann
- 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)
- termSubstFreeNames :: HasUnique name TermUnique => (name -> Maybe (Term name uni fun ann)) -> Term name uni fun ann -> Term name uni fun ann
- termMapNames :: forall name name' uni fun ann. (name -> name') -> Term name uni fun ann -> Term name' uni fun ann
- programMapNames :: forall name name' uni fun ann. (name -> name') -> Program name uni fun ann -> Program name' uni fun ann
- uniquesTerm :: HasUniques (Term name uni fun ann) => Term name uni fun ann -> Set Unique
- vTerm :: Ord name => Term name uni fun ann -> Set name
- termSize :: Term name uni fun ann -> Integer
- programSize :: Program name uni fun ann -> Integer
- serialisedSize :: Flat a => a -> Integer
- simplifyTerm :: forall uni fun m a. (ToBuiltinMeaning uni fun, MonadQuote m) => SimplifyOpts a -> Term Name uni fun a -> m (Term Name uni fun a)
- simplifyProgram :: forall uni fun m a. (ToBuiltinMeaning uni fun, MonadQuote m) => SimplifyOpts a -> Program Name uni fun a -> m (Program Name uni fun a)
- data SimplifyOpts a = SimplifyOpts {}
- soMaxSimplifierIterations :: forall a. Lens' (SimplifyOpts a) Int
- soInlineHints :: forall a a. Lens (SimplifyOpts a) (SimplifyOpts a) (InlineHints Name a) (InlineHints Name a)
- defaultSimplifyOpts :: SimplifyOpts a
- newtype InlineHints name a = InlineHints {
- shouldInline :: a -> name -> Bool
- module UntypedPlutusCore.DeBruijn
- termTagWidth :: NumBits
- encodeTermTag :: Word8 -> Encoding
- decodeTermTag :: Get Word8
- encodeTerm :: forall name uni fun ann. (Closed uni, uni `Everywhere` Flat, PrettyPlc (Term name uni fun ann), Flat fun, Flat ann, Flat name, Flat (Binder name)) => Term name uni fun ann -> Encoding
- data SizeLimit
- decodeTerm :: forall name uni fun ann. (Closed uni, uni `Everywhere` Flat, PrettyPlc (Term name uni fun ann), Flat fun, Flat ann, Flat name, Flat (Binder name)) => SizeLimit -> Get (Term name uni fun ann)
- sizeTerm :: forall name uni fun ann. (Closed uni, uni `Everywhere` Flat, PrettyPlc (Term name uni fun ann), Flat fun, Flat ann, Flat name, Flat (Binder name)) => Term name uni fun ann -> NumBits -> NumBits
- newtype WithSizeLimits (n :: Nat) a = WithSizeLimits a
- module UntypedPlutusCore.Core.Type
- termBinds :: Traversal' (Term name uni fun ann) name
- termVars :: Traversal' (Term name uni fun ann) name
- termUniques :: HasUniques (Term name uni fun ann) => Traversal' (Term name uni fun ann) Unique
- termSubterms :: Traversal' (Term name uni fun ann) (Term name uni fun ann)
- termSubtermsDeep :: Fold (Term name uni fun ann) (Term name uni fun ann)
- termUniquesDeep :: HasUniques (Term name uni fun ann) => Fold (Term name uni fun ann) Unique
- data TermF (name :: Type) (uni :: Type -> Type) (fun :: Type) (ann :: Type) r
- module PlutusCore.Name
- applyProgram :: Monoid a => Program name uni fun a -> Program name uni fun a -> Program name uni fun a
- parseScoped :: (AsParseError e AlexPosn, AsUniqueError e AlexPosn, MonadError e m, MonadQuote m) => ByteString -> m (Program Name DefaultUni DefaultFun AlexPosn)
- data DefaultUni a
- data DefaultFun
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.
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 #
Constructors
SimplifyOpts | |
Fields |
Instances
Show (SimplifyOpts a) Source # | |
Defined in UntypedPlutusCore.Simplify |
soMaxSimplifierIterations :: forall a. Lens' (SimplifyOpts a) Int Source #
soInlineHints :: forall a a. Lens (SimplifyOpts a) (SimplifyOpts a) (InlineHints Name a) (InlineHints Name a) Source #
newtype InlineHints name a Source #
Constructors
InlineHints | |
Fields
|
Instances
Show (InlineHints name a) Source # | |
Defined in PlutusCore.InlineUtils | |
Semigroup (InlineHints name a) Source # | |
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 # | |
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 # |
module UntypedPlutusCore.DeBruijn
termTagWidth :: NumBits Source #
Using 4 bits to encode term tags.
encodeTermTag :: Word8 -> Encoding Source #
decodeTermTag :: Get Word8 Source #
encodeTerm :: forall name uni fun ann. (Closed uni, uni `Everywhere` Flat, PrettyPlc (Term name uni fun ann), Flat fun, Flat ann, Flat name, Flat (Binder name)) => Term name uni fun ann -> Encoding Source #
decodeTerm :: forall name uni fun ann. (Closed uni, uni `Everywhere` Flat, PrettyPlc (Term name uni fun ann), Flat fun, Flat ann, Flat name, Flat (Binder name)) => SizeLimit -> Get (Term name uni fun ann) Source #
sizeTerm :: forall name uni fun ann. (Closed uni, uni `Everywhere` Flat, PrettyPlc (Term name uni fun ann), Flat fun, Flat ann, Flat name, Flat (Binder name)) => Term name uni fun ann -> NumBits -> NumBits Source #
newtype WithSizeLimits (n :: Nat) a Source #
A newtype to indicate that the program should be serialized with size checks for constants.
Constructors
WithSizeLimits a |
Instances
(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 # | |
Defined in UntypedPlutusCore.Core.Instance.Flat | |
(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 # | |
Defined in UntypedPlutusCore.Core.Instance.Flat |
module UntypedPlutusCore.Core.Type
termBinds :: Traversal' (Term name uni fun ann) name Source #
termVars :: Traversal' (Term name uni fun ann) name Source #
termUniques :: HasUniques (Term name uni fun ann) => Traversal' (Term name uni fun ann) Unique Source #
termSubterms :: Traversal' (Term name uni fun ann) (Term name uni fun ann) Source #
termUniquesDeep :: HasUniques (Term name uni fun ann) => Fold (Term name uni fun ann) Unique Source #
Base functors
data TermF (name :: Type) (uni :: Type -> Type) (fun :: Type) (ann :: Type) r Source #
Constructors
VarF !ann !name | |
LamAbsF !ann !name !r | |
ApplyF !ann !r !r | |
ForceF !ann !r | |
DelayF !ann !r | |
ConstantF !ann !(Some (ValueOf uni)) | |
BuiltinF !ann !fun | |
ErrorF !ann |
Instances
Functor (TermF name uni fun ann) Source # | |
Foldable (TermF name uni fun ann) Source # | |
Defined in UntypedPlutusCore.Core.Instance.Recursive Methods fold :: Monoid m => TermF name uni fun ann m -> m Source # foldMap :: Monoid m => (a -> m) -> TermF name uni fun ann a -> m Source # foldMap' :: Monoid m => (a -> m) -> TermF name uni fun ann a -> m Source # foldr :: (a -> b -> b) -> b -> TermF name uni fun ann a -> b Source # foldr' :: (a -> b -> b) -> b -> TermF name uni fun ann a -> b Source # foldl :: (b -> a -> b) -> b -> TermF name uni fun ann a -> b Source # foldl' :: (b -> a -> b) -> b -> TermF name uni fun ann a -> b Source # foldr1 :: (a -> a -> a) -> TermF name uni fun ann a -> a Source # foldl1 :: (a -> a -> a) -> TermF name uni fun ann a -> a Source # toList :: TermF name uni fun ann a -> [a] Source # null :: TermF name uni fun ann a -> Bool Source # length :: TermF name uni fun ann a -> Int Source # elem :: Eq a => a -> TermF name uni fun ann a -> Bool Source # maximum :: Ord a => TermF name uni fun ann a -> a Source # minimum :: Ord a => TermF name uni fun ann a -> a Source # | |
Traversable (TermF name uni fun ann) Source # | |
Defined in UntypedPlutusCore.Core.Instance.Recursive Methods traverse :: Applicative f => (a -> f b) -> TermF name uni fun ann a -> f (TermF name uni fun ann b) Source # sequenceA :: Applicative f => TermF name uni fun ann (f a) -> f (TermF name uni fun ann a) Source # mapM :: Monad m => (a -> m b) -> TermF name uni fun ann a -> m (TermF name uni fun ann b) Source # sequence :: Monad m => TermF name uni fun ann (m a) -> m (TermF name uni fun ann a) Source # |
module PlutusCore.Name
applyProgram :: Monoid a => Program name uni fun a -> Program name uni fun a -> Program name uni fun a Source #
Take one UPLC program and apply it to another.
parseScoped :: (AsParseError e AlexPosn, AsUniqueError e AlexPosn, MonadError e m, MonadQuote m) => ByteString -> m (Program Name DefaultUni DefaultFun AlexPosn) 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
data DefaultFun Source #
Default built-in functions.