Safe Haskell | None |
---|---|
Language | Haskell2010 |
Agda.Syntax.Translation.AbstractToConcrete
Description
The translation of abstract syntax to concrete syntax has two purposes. First it allows us to pretty print abstract syntax values without having to write a dedicated pretty printer, and second it serves as a sanity check for the concrete to abstract translation: translating from concrete to abstract and then back again should be (more or less) the identity.
Synopsis
- class ToConcrete a where
- type ConOfAbs a
- toConcrete :: MonadToConcrete m => a -> m (ConOfAbs a)
- bindToConcrete :: MonadToConcrete m => a -> (ConOfAbs a -> m b) -> m b
- toConcreteCtx :: (MonadToConcrete m, ToConcrete a) => Precedence -> a -> m (ConOfAbs a)
- type MonadAbsToCon (m :: Type -> Type) = (MonadFresh NameId m, MonadInteractionPoints m, MonadStConcreteNames m, HasOptions m, PureTCM m, IsString (m Doc), Null (m Doc), Semigroup (m Doc))
- abstractToConcrete_ :: (ToConcrete a, MonadAbsToCon m) => a -> m (ConOfAbs a)
- abstractToConcreteCtx :: (ToConcrete a, MonadAbsToCon m) => Precedence -> a -> m (ConOfAbs a)
- abstractToConcreteHiding :: (LensHiding i, ToConcrete a, MonadAbsToCon m) => i -> a -> m (ConOfAbs a)
- abstractToConcreteQName :: MonadAbsToCon m => AllowAmbiguousNames -> QName -> m QName
- abstractToConcreteScope :: (ToConcrete a, MonadAbsToCon m) => ScopeInfo -> a -> m (ConOfAbs a)
- abstractToConcreteTelescope :: MonadAbsToCon m => Telescope -> m [Maybe TypedBinding]
- abstractToConcreteUnqualify :: (ToConcrete a, MonadAbsToCon m) => a -> m (ConOfAbs a)
- data RangeAndPragma = RangeAndPragma Range Pragma
- noTakenNames :: MonadToConcrete m => m a -> m a
Documentation
class ToConcrete a where Source #
Minimal complete definition
Methods
toConcrete :: MonadToConcrete m => a -> m (ConOfAbs a) Source #
bindToConcrete :: MonadToConcrete m => a -> (ConOfAbs a -> m b) -> m b Source #
Instances
toConcreteCtx :: (MonadToConcrete m, ToConcrete a) => Precedence -> a -> m (ConOfAbs a) Source #
Translate something in a context of the given precedence.
type MonadAbsToCon (m :: Type -> Type) = (MonadFresh NameId m, MonadInteractionPoints m, MonadStConcreteNames m, HasOptions m, PureTCM m, IsString (m Doc), Null (m Doc), Semigroup (m Doc)) Source #
Preconditions to run the AbstractToConcrete translation.
abstractToConcrete_ :: (ToConcrete a, MonadAbsToCon m) => a -> m (ConOfAbs a) Source #
abstractToConcreteCtx :: (ToConcrete a, MonadAbsToCon m) => Precedence -> a -> m (ConOfAbs a) Source #
abstractToConcreteHiding :: (LensHiding i, ToConcrete a, MonadAbsToCon m) => i -> a -> m (ConOfAbs a) Source #
abstractToConcreteQName :: MonadAbsToCon m => AllowAmbiguousNames -> QName -> m QName Source #
abstractToConcreteScope :: (ToConcrete a, MonadAbsToCon m) => ScopeInfo -> a -> m (ConOfAbs a) Source #
abstractToConcreteTelescope :: MonadAbsToCon m => Telescope -> m [Maybe TypedBinding] Source #
abstractToConcreteUnqualify :: (ToConcrete a, MonadAbsToCon m) => a -> m (ConOfAbs a) Source #
data RangeAndPragma Source #
Constructors
RangeAndPragma Range Pragma |
Instances
ToConcrete RangeAndPragma Source # | |||||
Defined in Agda.Syntax.Translation.AbstractToConcrete Associated Types
Methods toConcrete :: MonadToConcrete m => RangeAndPragma -> m (ConOfAbs RangeAndPragma) Source # bindToConcrete :: MonadToConcrete m => RangeAndPragma -> (ConOfAbs RangeAndPragma -> m b) -> m b Source # | |||||
type ConOfAbs RangeAndPragma Source # | |||||
Defined in Agda.Syntax.Translation.AbstractToConcrete |
noTakenNames :: MonadToConcrete m => m a -> m a Source #