| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
PlutusCore.Rename.Monad
Description
The monad that the renamer runs in and related infrastructure.
Synopsis
- newtype RenameT ren m a = RenameT {}
- type ScopedRenameT = RenameT ScopedRenaming
- newtype Renaming unique = Renaming {
- unRenaming :: UniqueMap unique unique
- type TypeRenaming = Renaming TypeUnique
- data ScopedRenaming = ScopedRenaming {}
- class Coercible unique Unique => HasRenaming ren unique where
- scopedRenamingTypes :: Lens' ScopedRenaming (Renaming TypeUnique)
- scopedRenamingTerms :: Lens' ScopedRenaming (Renaming TermUnique)
- runRenameT :: Monoid ren => RenameT ren m a -> m a
- lookupNameM :: (HasUnique name unique, HasRenaming ren unique, MonadReader ren m) => name -> m (Maybe unique)
- renameNameM :: (HasRenaming ren unique, HasUnique name unique, MonadReader ren m) => name -> m name
- withFreshenedName :: (HasRenaming ren unique, HasUnique name unique, MonadQuote m, MonadReader ren m) => name -> (name -> m c) -> m c
- withRenamedName :: (HasRenaming ren unique, HasUnique name unique, MonadReader ren m) => name -> name -> m c -> m c
Documentation
The monad the renamer runs in.
Instances
| Monad m => MonadReader ren (RenameT ren m) # | |
| Alternative m => Alternative (RenameT ren m) # | |
| Applicative m => Applicative (RenameT ren m) # | |
Defined in PlutusCore.Rename.Monad Methods pure :: a -> RenameT ren m a # (<*>) :: RenameT ren m (a -> b) -> RenameT ren m a -> RenameT ren m b # liftA2 :: (a -> b -> c) -> RenameT ren m a -> RenameT ren m b -> RenameT ren m c # (*>) :: RenameT ren m a -> RenameT ren m b -> RenameT ren m b # (<*) :: RenameT ren m a -> RenameT ren m b -> RenameT ren m a # | |
| Functor m => Functor (RenameT ren m) # | |
| Monad m => Monad (RenameT ren m) # | |
| MonadQuote m => MonadQuote (RenameT ren m) # | |
Defined in PlutusCore.Rename.Monad | |
type ScopedRenameT = RenameT ScopedRenaming #
A renaming is a mapping from old uniques to new ones.
Constructors
| Renaming | |
Fields
| |
type TypeRenaming = Renaming TypeUnique #
A type-level renaming.
Needed for instantiating functions running over types in generic RenameT ren m to
a particular type of renaming.
data ScopedRenaming #
Scoping-aware mapping from locally unique uniques to globally unique uniques.
Constructors
| ScopedRenaming | |
Instances
| Monoid ScopedRenaming # | |
Defined in PlutusCore.Rename.Monad Methods mappend :: ScopedRenaming -> ScopedRenaming -> ScopedRenaming # mconcat :: [ScopedRenaming] -> ScopedRenaming # | |
| Semigroup ScopedRenaming # | |
Defined in PlutusCore.Rename.Monad Methods (<>) :: ScopedRenaming -> ScopedRenaming -> ScopedRenaming # sconcat :: NonEmpty ScopedRenaming -> ScopedRenaming # stimes :: Integral b => b -> ScopedRenaming -> ScopedRenaming # | |
| HasRenaming ScopedRenaming TermUnique # | |
Defined in PlutusCore.Rename.Monad Methods | |
| HasRenaming ScopedRenaming TypeUnique # | |
Defined in PlutusCore.Rename.Monad Methods | |
class Coercible unique Unique => HasRenaming ren unique where #
A class that specifies which Renaming a ren has inside.
A ren can contain several Renamings (like Scoped, for example).
Instances
| HasRenaming ScopedRenaming TermUnique # | |
Defined in PlutusCore.Rename.Monad Methods | |
| HasRenaming ScopedRenaming TypeUnique # | |
Defined in PlutusCore.Rename.Monad Methods | |
| (Coercible unique1 Unique, unique1 ~ unique2) => HasRenaming (Renaming unique1) unique2 # | |
runRenameT :: Monoid ren => RenameT ren m a -> m a #
Run a RenameT computation with an empty renaming.
lookupNameM :: (HasUnique name unique, HasRenaming ren unique, MonadReader ren m) => name -> m (Maybe unique) #
Look up the new unique a name got mapped to.
renameNameM :: (HasRenaming ren unique, HasUnique name unique, MonadReader ren m) => name -> m name #
Rename a name that has a unique inside.
withFreshenedName :: (HasRenaming ren unique, HasUnique name unique, MonadQuote m, MonadReader ren m) => name -> (name -> m c) -> m c #
Replace the unique in a name by a new unique, save the mapping from the old unique to the new one and supply the updated value to a continuation.
withRenamedName :: (HasRenaming ren unique, HasUnique name unique, MonadReader ren m) => name -> name -> m c -> m c #
Run a RenameT computation in the environment extended by the mapping from an old name
to a new one.