Agda-2.5.4: A dependently typed functional programming language and proof assistant

Safe HaskellNone
LanguageHaskell2010

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

Documentation

class ToConcrete a c | a -> c where #

Methods

toConcrete :: a -> AbsToCon c #

bindToConcrete :: a -> (c -> AbsToCon b) -> AbsToCon b #

Instances
ToConcrete InteractionId Expr # 
Instance details

Defined in Agda.Syntax.Translation.AbstractToConcrete

ToConcrete ModuleName QName # 
Instance details

Defined in Agda.Syntax.Translation.AbstractToConcrete

ToConcrete QName QName # 
Instance details

Defined in Agda.Syntax.Translation.AbstractToConcrete

ToConcrete Name Name # 
Instance details

Defined in Agda.Syntax.Translation.AbstractToConcrete

ToConcrete ResolvedName QName #

Assumes name is not UnknownName.

Instance details

Defined in Agda.Syntax.Translation.AbstractToConcrete

ToConcrete AbstractName QName # 
Instance details

Defined in Agda.Syntax.Translation.AbstractToConcrete

ToConcrete Pattern Pattern # 
Instance details

Defined in Agda.Syntax.Translation.AbstractToConcrete

ToConcrete LHSCore Pattern # 
Instance details

Defined in Agda.Syntax.Translation.AbstractToConcrete

ToConcrete LHS LHS # 
Instance details

Defined in Agda.Syntax.Translation.AbstractToConcrete

ToConcrete SpineLHS LHS # 
Instance details

Defined in Agda.Syntax.Translation.AbstractToConcrete

ToConcrete WhereDeclarations WhereClause # 
Instance details

Defined in Agda.Syntax.Translation.AbstractToConcrete

ToConcrete TypedBinding TypedBinding # 
Instance details

Defined in Agda.Syntax.Translation.AbstractToConcrete

ToConcrete ModuleApplication ModuleApplication # 
Instance details

Defined in Agda.Syntax.Translation.AbstractToConcrete

ToConcrete Expr Expr # 
Instance details

Defined in Agda.Syntax.Translation.AbstractToConcrete

ToConcrete BindName Name # 
Instance details

Defined in Agda.Syntax.Translation.AbstractToConcrete

ToConcrete NamedMeta Expr # 
Instance details

Defined in Agda.Syntax.Translation.AbstractToConcrete

ToConcrete RangeAndPragma Pragma # 
Instance details

Defined in Agda.Syntax.Translation.AbstractToConcrete

ToConcrete TypedBindings [TypedBindings] # 
Instance details

Defined in Agda.Syntax.Translation.AbstractToConcrete

ToConcrete LamBinding [LamBinding] # 
Instance details

Defined in Agda.Syntax.Translation.AbstractToConcrete

ToConcrete LetBinding [Declaration] # 
Instance details

Defined in Agda.Syntax.Translation.AbstractToConcrete

ToConcrete Declaration [Declaration] # 
Instance details

Defined in Agda.Syntax.Translation.AbstractToConcrete

ToConcrete RHS (RHS, [Expr], [Expr], [Declaration]) # 
Instance details

Defined in Agda.Syntax.Translation.AbstractToConcrete

Methods

toConcrete :: RHS -> AbsToCon (RHS0, [Expr], [Expr], [Declaration]) #

bindToConcrete :: RHS -> ((RHS0, [Expr], [Expr], [Declaration]) -> AbsToCon b) -> AbsToCon b #

ToConcrete (Constr Constructor) Declaration # 
Instance details

Defined in Agda.Syntax.Translation.AbstractToConcrete

ToConcrete (DontTouchMe a) a # 
Instance details

Defined in Agda.Syntax.Translation.AbstractToConcrete

ToConcrete a c => ToConcrete [a] [c] # 
Instance details

Defined in Agda.Syntax.Translation.AbstractToConcrete

Methods

toConcrete :: [a] -> AbsToCon [c] #

bindToConcrete :: [a] -> ([c] -> AbsToCon b) -> AbsToCon b #

ToConcrete (Maybe QName) (Maybe Name) # 
Instance details

Defined in Agda.Syntax.Translation.AbstractToConcrete

ToConcrete a c => ToConcrete (Arg a) (Arg c) # 
Instance details

Defined in Agda.Syntax.Translation.AbstractToConcrete

Methods

toConcrete :: Arg a -> AbsToCon (Arg c) #

bindToConcrete :: Arg a -> (Arg c -> AbsToCon b) -> AbsToCon b #

ToConcrete a c => ToConcrete (WithHiding a) (WithHiding c) # 
Instance details

Defined in Agda.Syntax.Translation.AbstractToConcrete

ToConcrete a c => ToConcrete (FieldAssignment' a) (FieldAssignment' c) # 
Instance details

Defined in Agda.Syntax.Translation.AbstractToConcrete

ToConcrete a LHS => ToConcrete (Clause' a) [Declaration] # 
Instance details

Defined in Agda.Syntax.Translation.AbstractToConcrete

(ToConcrete a1 c1, ToConcrete a2 c2) => ToConcrete (Either a1 a2) (Either c1 c2) # 
Instance details

Defined in Agda.Syntax.Translation.AbstractToConcrete

Methods

toConcrete :: Either a1 a2 -> AbsToCon (Either c1 c2) #

bindToConcrete :: Either a1 a2 -> (Either c1 c2 -> AbsToCon b) -> AbsToCon b #

(ToConcrete a1 c1, ToConcrete a2 c2) => ToConcrete (a1, a2) (c1, c2) # 
Instance details

Defined in Agda.Syntax.Translation.AbstractToConcrete

Methods

toConcrete :: (a1, a2) -> AbsToCon (c1, c2) #

bindToConcrete :: (a1, a2) -> ((c1, c2) -> AbsToCon b) -> AbsToCon b #

ToConcrete a c => ToConcrete (Named name a) (Named name c) # 
Instance details

Defined in Agda.Syntax.Translation.AbstractToConcrete

Methods

toConcrete :: Named name a -> AbsToCon (Named name c) #

bindToConcrete :: Named name a -> (Named name c -> AbsToCon b) -> AbsToCon b #

(ToConcrete a c, ToConcrete b d) => ToConcrete (OutputConstraint' a b) (OutputConstraint' c d) # 
Instance details

Defined in Agda.Interaction.BasicOps

(ToConcrete a c, ToConcrete b d) => ToConcrete (OutputConstraint a b) (OutputConstraint c d) # 
Instance details

Defined in Agda.Interaction.BasicOps

(ToConcrete a c, ToConcrete b d) => ToConcrete (OutputForm a b) (OutputForm c d) # 
Instance details

Defined in Agda.Interaction.BasicOps

Methods

toConcrete :: OutputForm a b -> AbsToCon (OutputForm c d) #

bindToConcrete :: OutputForm a b -> (OutputForm c d -> AbsToCon b0) -> AbsToCon b0 #

(ToConcrete a1 c1, ToConcrete a2 c2, ToConcrete a3 c3) => ToConcrete (a1, a2, a3) (c1, c2, c3) # 
Instance details

Defined in Agda.Syntax.Translation.AbstractToConcrete

Methods

toConcrete :: (a1, a2, a3) -> AbsToCon (c1, c2, c3) #

bindToConcrete :: (a1, a2, a3) -> ((c1, c2, c3) -> AbsToCon b) -> AbsToCon b #

toConcreteCtx :: ToConcrete a c => Precedence -> a -> AbsToCon c #

Translate something in a context of the given precedence.

type AbsToCon = ReaderT Env TCM #

We put the translation into TCM in order to print debug messages.

data DontTouchMe a #

Instances
ToConcrete (DontTouchMe a) a # 
Instance details

Defined in Agda.Syntax.Translation.AbstractToConcrete

data Env #