Safe Haskell | None |
---|---|
Language | Haskell2010 |
Agda.Syntax.Abstract.Name
Description
Abstract names carry unique identifiers and stuff.
Synopsis
- commonParentModule :: ModuleName -> ModuleName -> ModuleName
- getUnambiguous :: AmbiguousQName -> Maybe QName
- headAmbQ :: AmbiguousQName -> QName
- isAmbiguous :: AmbiguousQName -> Bool
- isAnonymousModuleName :: ModuleName -> Bool
- isInModule :: QName -> ModuleName -> Bool
- isLeChildModuleOf :: ModuleName -> ModuleName -> Bool
- isLeParentModuleOf :: ModuleName -> ModuleName -> Bool
- isLtChildModuleOf :: ModuleName -> ModuleName -> Bool
- isLtParentModuleOf :: ModuleName -> ModuleName -> Bool
- isOperator :: QName -> Bool
- lensQNameName :: Lens' QName Name
- makeName :: NameId -> Name -> Range -> Fixity' -> Bool -> Name
- mnameFromList :: [Name] -> ModuleName
- mnameFromList1 :: List1 Name -> ModuleName
- mnameToConcrete :: ModuleName -> QName
- mnameToList1 :: ModuleName -> List1 Name
- mnameToQName :: ModuleName -> QName
- nameToArgName :: Name -> ArgName
- namedArgName :: NamedArg Name -> ArgName
- nextName :: FreshNameMode -> Name -> Name
- noModuleName :: ModuleName
- qnameFromList :: List1 Name -> QName
- qnameToConcrete :: QName -> QName
- qnameToList :: QName -> List1 Name
- qnameToList0 :: QName -> [Name]
- qnameToMName :: QName -> ModuleName
- qualify :: ModuleName -> Name -> QName
- qualifyM :: ModuleName -> ModuleName -> ModuleName
- qualifyQ :: ModuleName -> QName -> QName
- qualify_ :: Name -> QName
- sameRoot :: Name -> Name -> Bool
- showQNameId :: QName -> String
- uglyShowName :: Name -> String
- unambiguous :: QName -> AmbiguousQName
- withRangesOf :: ModuleName -> List1 Name -> ModuleName
- withRangesOfQ :: ModuleName -> QName -> ModuleName
- newtype AmbiguousQName = AmbQ {}
- class IsProjP a where
- isProjP :: a -> Maybe (ProjOrigin, AmbiguousQName)
- class MkName a where
- newtype ModuleName = MName {
- mnameToList :: [Name]
- data Name = Name {}
- data QName = QName {}
- data QNamed a = QNamed {}
- data Suffix
- class IsNoName a where
- data FreshNameMode
Documentation
commonParentModule :: ModuleName -> ModuleName -> ModuleName Source #
getUnambiguous :: AmbiguousQName -> Maybe QName Source #
Get the name if unambiguous.
headAmbQ :: AmbiguousQName -> QName Source #
Get the first of the ambiguous names.
isAmbiguous :: AmbiguousQName -> Bool Source #
Is a name ambiguous.
isAnonymousModuleName :: ModuleName -> Bool Source #
A module is anonymous if the qualification path ends in an underscore.
isInModule :: QName -> ModuleName -> Bool Source #
isLeChildModuleOf :: ModuleName -> ModuleName -> Bool Source #
Is the first module a weak child of the second?
isLeParentModuleOf :: ModuleName -> ModuleName -> Bool Source #
Is the first module a weak parent of the second?
isLtChildModuleOf :: ModuleName -> ModuleName -> Bool Source #
Is the first module a proper child of the second?
isLtParentModuleOf :: ModuleName -> ModuleName -> Bool Source #
Is the first module a proper parent of the second?
isOperator :: QName -> Bool Source #
Is the name an operator?
mnameFromList :: [Name] -> ModuleName Source #
mnameFromList1 :: List1 Name -> ModuleName Source #
mnameToConcrete :: ModuleName -> QName Source #
mnameToList1 :: ModuleName -> List1 Name Source #
mnameToQName :: ModuleName -> QName Source #
nameToArgName :: Name -> ArgName Source #
nextName :: FreshNameMode -> Name -> Name Source #
Get the next version of the concrete name. For instance, nextName "x" = "x₁"
.
The name must not be a NoName
.
qnameToConcrete :: QName -> QName Source #
Turn a qualified name into a concrete name. This should only be used as a fallback when looking up the right concrete name in the scope fails.
qnameToList0 :: QName -> [Name] Source #
qnameToMName :: QName -> ModuleName Source #
qualifyM :: ModuleName -> ModuleName -> ModuleName Source #
showQNameId :: QName -> String Source #
uglyShowName :: Name -> String Source #
Useful for debugging scoping problems
unambiguous :: QName -> AmbiguousQName Source #
A singleton "ambiguous" name.
withRangesOf :: ModuleName -> List1 Name -> ModuleName Source #
Sets the ranges of the individual names in the module name to
match those of the corresponding concrete names. If the concrete
names are fewer than the number of module name name parts, then the
initial name parts get the range noRange
.
C.D.E `withRangesOf` [A, B]
returns C.D.E
but with ranges set
as follows:
C
:noRange
.D
: the range ofA
.E
: the range ofB
.
Precondition: The number of module name name parts has to be at least as large as the length of the list.
withRangesOfQ :: ModuleName -> QName -> ModuleName Source #
Like withRangesOf
, but uses the name parts (qualifier + name)
of the qualified name as the list of concrete names.
newtype AmbiguousQName Source #
Ambiguous qualified names. Used for overloaded constructors.
Invariant: All the names in the list must have the same concrete,
unqualified name. (This implies that they all have the same Range
).
Instances
class IsProjP a where Source #
Check whether we are a projection pattern.
Methods
isProjP :: a -> Maybe (ProjOrigin, AmbiguousQName) Source #
Instances
IsProjP Expr Source # | |
Defined in Agda.Syntax.Abstract Methods isProjP :: Expr -> Maybe (ProjOrigin, AmbiguousQName) Source # | |
IsProjP Void Source # | |
Defined in Agda.Syntax.Abstract.Name Methods isProjP :: Void -> Maybe (ProjOrigin, AmbiguousQName) Source # | |
IsProjP (Pattern' e) Source # | |
Defined in Agda.Syntax.Abstract Methods isProjP :: Pattern' e -> Maybe (ProjOrigin, AmbiguousQName) Source # | |
IsProjP a => IsProjP (Arg a) Source # | |
Defined in Agda.Syntax.Abstract.Name Methods isProjP :: Arg a -> Maybe (ProjOrigin, AmbiguousQName) Source # | |
IsProjP (Pattern' a) Source # | |
Defined in Agda.Syntax.Internal Methods isProjP :: Pattern' a -> Maybe (ProjOrigin, AmbiguousQName) Source # | |
IsProjP a => IsProjP (Named n a) Source # | |
Defined in Agda.Syntax.Abstract.Name Methods isProjP :: Named n a -> Maybe (ProjOrigin, AmbiguousQName) Source # |
Make a Name
from some kind of string.
Minimal complete definition
newtype ModuleName Source #
A module name is just a qualified name.
The SetRange
instance for module names sets all individual ranges
to the given one.
Constructors
MName | |
Fields
|
Instances
A name is a unique identifier and a suggestion for a concrete name. The concrete name contains the source location (if any) of the name. The source location of the binding site is also recorded.
Constructors
Name | |
Fields
|
Instances
LensFixity Name Source # | |||||
Defined in Agda.Syntax.Abstract.Name | |||||
LensFixity' Name Source # | |||||
Defined in Agda.Syntax.Abstract.Name | |||||
Pretty Name Source # | |||||
IsNoName Name Source # | An abstract name is empty if its concrete name is empty. | ||||
LensInScope Name Source # | |||||
Defined in Agda.Syntax.Abstract.Name Methods lensInScope :: Lens' Name NameInScope Source # isInScope :: Name -> NameInScope Source # mapInScope :: (NameInScope -> NameInScope) -> Name -> Name Source # setInScope :: Name -> Name Source # setNotInScope :: Name -> Name Source # | |||||
NumHoles Name Source # | |||||
Suggest Name Source # | |||||
Defined in Agda.Syntax.Internal | |||||
HasRange Name Source # | |||||
KillRange Name Source # | |||||
Defined in Agda.Syntax.Abstract.Name Methods | |||||
SetRange Name Source # | |||||
SetBindingSite Name Source # | |||||
Defined in Agda.Syntax.Scope.Base | |||||
ToConcrete Name Source # | |||||
Defined in Agda.Syntax.Translation.AbstractToConcrete Associated Types
| |||||
Reify Name Source # | |||||
Defined in Agda.Syntax.Translation.InternalToAbstract Associated Types
| |||||
FreshName Name Source # | |||||
Defined in Agda.TypeChecking.Monad.Base Methods freshName_ :: MonadFresh NameId m => Name -> m Name Source # | |||||
AddContext Name Source # | |||||
Defined in Agda.TypeChecking.Monad.Context Methods addContext :: MonadAddContext m => Name -> m a -> m a Source # contextSize :: Name -> Nat Source # | |||||
PrettyTCM Name Source # | |||||
Defined in Agda.TypeChecking.Pretty | |||||
InstantiateFull Name Source # | |||||
Defined in Agda.TypeChecking.Reduce | |||||
EmbPrj Name Source # | |||||
Subst Name Source # | |||||
Defined in Agda.TypeChecking.Substitute Associated Types
Methods applySubst :: Substitution' (SubstArg Name) -> Name -> Name Source # | |||||
NFData Name Source # | The range is not forced. | ||||
Defined in Agda.Syntax.Abstract.Name | |||||
Show Name Source # | Use | ||||
Eq Name Source # | |||||
Ord Name Source # | |||||
Hashable Name Source # | |||||
Defined in Agda.Syntax.Abstract.Name | |||||
AddContext (Dom (Name, Type)) Source # | |||||
Defined in Agda.TypeChecking.Monad.Context Methods addContext :: MonadAddContext m => Dom (Name, Type) -> m a -> m a Source # | |||||
(ToAbstract r, AbsOfRef r ~ Expr) => ToAbstract (Dom r, Name) Source # | |||||
Defined in Agda.Syntax.Translation.ReflectedToAbstract Associated Types
Methods toAbstract :: MonadReflectedToAbstract m => (Dom r, Name) -> m (AbsOfRef (Dom r, Name)) Source # | |||||
AddContext (Name, Dom Type) Source # | |||||
Defined in Agda.TypeChecking.Monad.Context Methods addContext :: MonadAddContext m => (Name, Dom Type) -> m a -> m a Source # | |||||
AddContext (List1 Name, Dom Type) Source # | |||||
Defined in Agda.TypeChecking.Monad.Context | |||||
AddContext (List1 (Arg Name), Type) Source # | |||||
Defined in Agda.TypeChecking.Monad.Context | |||||
AddContext (List1 (NamedArg Name), Type) Source # | |||||
Defined in Agda.TypeChecking.Monad.Context | |||||
AddContext (List1 (WithHiding Name), Dom Type) Source # | |||||
Defined in Agda.TypeChecking.Monad.Context Methods addContext :: MonadAddContext m => (List1 (WithHiding Name), Dom Type) -> m a -> m a Source # contextSize :: (List1 (WithHiding Name), Dom Type) -> Nat Source # | |||||
AddContext ([Name], Dom Type) Source # | |||||
Defined in Agda.TypeChecking.Monad.Context Methods addContext :: MonadAddContext m => ([Name], Dom Type) -> m a -> m a Source # | |||||
AddContext ([Arg Name], Type) Source # | |||||
Defined in Agda.TypeChecking.Monad.Context Methods addContext :: MonadAddContext m => ([Arg Name], Type) -> m a -> m a Source # | |||||
AddContext ([NamedArg Name], Type) Source # | |||||
Defined in Agda.TypeChecking.Monad.Context Methods addContext :: MonadAddContext m => ([NamedArg Name], Type) -> m a -> m a Source # | |||||
AddContext ([WithHiding Name], Dom Type) Source # | |||||
Defined in Agda.TypeChecking.Monad.Context Methods addContext :: MonadAddContext m => ([WithHiding Name], Dom Type) -> m a -> m a Source # contextSize :: ([WithHiding Name], Dom Type) -> Nat Source # | |||||
type ConOfAbs Name Source # | |||||
Defined in Agda.Syntax.Translation.AbstractToConcrete | |||||
type ReifiesTo Name Source # | |||||
Defined in Agda.Syntax.Translation.InternalToAbstract | |||||
type SubstArg Name Source # | |||||
Defined in Agda.TypeChecking.Substitute | |||||
type AbsOfRef (Dom r, Name) Source # | |||||
Defined in Agda.Syntax.Translation.ReflectedToAbstract |
Qualified names are non-empty lists of names. Equality on qualified names are just equality on the last name, i.e. the module part is just for show.
The SetRange
instance for qualified names sets all individual
ranges (including those of the module prefix) to the given one.
Constructors
QName | |
Fields
|
Instances
DeclaredNames KName Source # | |||||
Defined in Agda.Syntax.Abstract.Views Methods declaredNames :: Collection KName m => KName -> m Source # | |||||
ExprLike QName Source # | |||||
Defined in Agda.Syntax.Abstract.Views Methods recurseExpr :: RecurseExprFn m QName Source # foldExpr :: FoldExprFn m QName Source # | |||||
LensFixity QName Source # | |||||
Defined in Agda.Syntax.Abstract.Name | |||||
LensFixity' QName Source # | |||||
Defined in Agda.Syntax.Abstract.Name | |||||
Pretty QName Source # | |||||
LensInScope QName Source # | |||||
Defined in Agda.Syntax.Abstract.Name Methods lensInScope :: Lens' QName NameInScope Source # isInScope :: QName -> NameInScope Source # mapInScope :: (NameInScope -> NameInScope) -> QName -> QName Source # setInScope :: QName -> QName Source # setNotInScope :: QName -> QName Source # | |||||
NumHoles QName Source # | |||||
TermLike QName Source # | |||||
NamesIn QName Source # | |||||
Defined in Agda.Syntax.Internal.Names | |||||
HasRange QName Source # | |||||
KillRange QName Source # | |||||
Defined in Agda.Syntax.Abstract.Name Methods | |||||
KillRange Definitions Source # | |||||
Defined in Agda.TypeChecking.Monad.Base Methods | |||||
KillRange RewriteRuleMap Source # | |||||
Defined in Agda.TypeChecking.Monad.Base Methods | |||||
SetRange QName Source # | |||||
SetBindingSite QName Source # | |||||
Defined in Agda.Syntax.Scope.Base | |||||
ToConcrete QName Source # | |||||
Defined in Agda.Syntax.Translation.AbstractToConcrete Associated Types
| |||||
Occurs QName Source # | |||||
ChaseDisplayForms QName Source # | |||||
Defined in Agda.TypeChecking.Monad.Signature | |||||
PrettyTCM QName Source # | |||||
Defined in Agda.TypeChecking.Pretty | |||||
FromTerm QName Source # | |||||
Defined in Agda.TypeChecking.Primitive | |||||
PrimTerm QName Source # | |||||
PrimType QName Source # | |||||
ToTerm QName Source # | |||||
InstantiateFull QName Source # | |||||
Defined in Agda.TypeChecking.Reduce | |||||
EmbPrj QName Source # | |||||
Subst QName Source # | |||||
Defined in Agda.TypeChecking.Substitute.Class Associated Types
Methods applySubst :: Substitution' (SubstArg QName) -> QName -> QName Source # | |||||
Unquote QName Source # | |||||
Sized QName Source # | |||||
NFData QName Source # | |||||
Defined in Agda.Syntax.Abstract.Name | |||||
Show QName Source # | |||||
Eq QName Source # | |||||
Ord QName Source # | |||||
Hashable QName Source # | |||||
Defined in Agda.Syntax.Abstract.Name | |||||
type ConOfAbs QName Source # | |||||
Defined in Agda.Syntax.Translation.AbstractToConcrete | |||||
type SubstArg QName Source # | |||||
Defined in Agda.TypeChecking.Substitute.Class |
Something preceeded by a qualified name.
Instances
Functor QNamed Source # | |||||
Foldable QNamed Source # | |||||
Defined in Agda.Syntax.Abstract.Name Methods fold :: Monoid m => QNamed m -> m # foldMap :: Monoid m => (a -> m) -> QNamed a -> m # foldMap' :: Monoid m => (a -> m) -> QNamed a -> m # foldr :: (a -> b -> b) -> b -> QNamed a -> b # foldr' :: (a -> b -> b) -> b -> QNamed a -> b # foldl :: (b -> a -> b) -> b -> QNamed a -> b # foldl' :: (b -> a -> b) -> b -> QNamed a -> b # foldr1 :: (a -> a -> a) -> QNamed a -> a # foldl1 :: (a -> a -> a) -> QNamed a -> a # elem :: Eq a => a -> QNamed a -> Bool # maximum :: Ord a => QNamed a -> a # minimum :: Ord a => QNamed a -> a # | |||||
Traversable QNamed Source # | |||||
Pretty a => Pretty (QNamed a) Source # | |||||
Reify (QNamed Clause) Source # | |||||
Defined in Agda.Syntax.Translation.InternalToAbstract Associated Types
| |||||
Reify (QNamed System) Source # | |||||
Defined in Agda.Syntax.Translation.InternalToAbstract Associated Types
| |||||
ToAbstract (QNamed Clause) Source # | |||||
Defined in Agda.Syntax.Translation.ReflectedToAbstract Associated Types
Methods toAbstract :: MonadReflectedToAbstract m => QNamed Clause -> m (AbsOfRef (QNamed Clause)) Source # | |||||
ToAbstract (List1 (QNamed Clause)) Source # | |||||
Defined in Agda.Syntax.Translation.ReflectedToAbstract | |||||
ToAbstract [QNamed Clause] Source # | |||||
Defined in Agda.Syntax.Translation.ReflectedToAbstract Associated Types
Methods toAbstract :: MonadReflectedToAbstract m => [QNamed Clause] -> m (AbsOfRef [QNamed Clause]) Source # | |||||
PrettyTCM (QNamed Clause) Source # | |||||
Defined in Agda.TypeChecking.Pretty | |||||
Show a => Show (QNamed a) Source # | |||||
type ReifiesTo (QNamed Clause) Source # | |||||
Defined in Agda.Syntax.Translation.InternalToAbstract | |||||
type ReifiesTo (QNamed System) Source # | |||||
Defined in Agda.Syntax.Translation.InternalToAbstract | |||||
type AbsOfRef (QNamed Clause) Source # | |||||
Defined in Agda.Syntax.Translation.ReflectedToAbstract | |||||
type AbsOfRef (List1 (QNamed Clause)) Source # | |||||
type AbsOfRef [QNamed Clause] Source # | |||||
Defined in Agda.Syntax.Translation.ReflectedToAbstract |
A name suffix
class IsNoName a where Source #
Check whether a name is the empty name "_".
Minimal complete definition
Nothing
Methods
Instances
IsNoName Name Source # | An abstract name is empty if its concrete name is empty. |
IsNoName Name Source # | |
IsNoName QName Source # | |
IsNoName RawTopLevelModuleName Source # | |
Defined in Agda.Syntax.TopLevelModuleName Methods isNoName :: RawTopLevelModuleName -> Bool Source # | |
IsNoName ByteString Source # | |
Defined in Agda.Syntax.Concrete.Name Methods isNoName :: ByteString -> Bool Source # | |
IsNoName String Source # | |
IsNoName a => IsNoName (Ranged a) Source # | |
IsNoName a => IsNoName (WithOrigin a) Source # | |
Defined in Agda.Syntax.Concrete.Name Methods isNoName :: WithOrigin a -> Bool Source # |
data FreshNameMode Source #
Method by which to generate fresh unshadowed names.
Constructors
UnicodeSubscript | Append an integer Unicode subscript: x, x₁, x₂, … |
AsciiCounter | Append an integer ASCII counter: x, x1, x2, … |