Safe Haskell | None |
---|---|
Language | Haskell2010 |
- data Mod a = Mod PathMod a
- type PathMod = [NameMod]
- newtype NameMod = NameMod Text
- class ModuleFor src ss s where
- newtype Imports = Imports (Map PathMod (Map PathMod FilterImports))
- type FilterImports = Maybe (Set NameTe)
- importQualifiedAs :: PathMod -> Modules src ss -> Imports
- newtype Modules src ss = Modules {}
- unionModules :: Modules src ss -> Modules src ss -> Either Error_Module (Modules src ss)
- unionModulesUnchecked :: Modules src ss -> Modules src ss -> Modules src ss
- data Error_Module
- data Module src ss = Module {
- module_prefix :: ModuleFixy src ss Unifix
- module_infix :: ModuleFixy src ss Infix
- module_postfix :: ModuleFixy src ss Unifix
- module_fixity :: FixitySing fixy -> Module src ss -> ModuleFixy src ss fixy
- moduleEmpty :: Module src ss
- moduleWhere :: forall src ss. Source src => PathMod -> [DefTerm src ss] -> (PathMod, Module src ss)
- type ModuleFixy src ss fixy = Map NameTe (Tokenizer fixy src ss)
- data Tokenizer fixy src ss = Tokenizer {
- token_fixity :: fixy
- token_term :: src -> Token_Term src ss
- data Token_Term src ss
- = Token_Term (TermAVT src ss)
- | Token_TermVT (TermVT src ss '[])
- | Token_Term_Abst src NameTe (AST_Type src) (AST_Term src ss)
- | Token_Term_Var src NameTe
- | Token_Term_Let src NameTe (AST_Term src ss) (AST_Term src ss)
- | Token_Term_App src
- newtype NameTe = NameTe Text
- data CtxTy src ts where
- appendCtxTy :: CtxTy src ts0 -> CtxTy src ts1 -> CtxTy src (ts0 ++ ts1)
- type AST_Term src ss = BinTree (Token_Term src ss)
- type Inj_Modules src ss = Inj_ModulesR src ss ss
- inj_Modules :: forall src ss. Inj_Modules src ss => Either Error_Module (Modules src ss)
- class Inj_ModulesR src ss rs where
- data DefTerm src ss = (:=) (WithFixity NameTe) (forall ts. Term src ss ts vs t)
- lookupDefTerm :: forall src ss fixy. FixitySing fixy -> Imports -> Mod NameTe -> Modules src ss -> Either Error_Module (Tokenizer fixy src ss)
- deleteDefTerm :: Mod NameTe -> Modules src ss -> Modules src ss
- deleteDefTermInfix :: Mod NameTe -> Modules src ss -> Modules src ss
- deleteDefTermPrefix :: Mod NameTe -> Modules src ss -> Modules src ss
- deleteDefTermPostix :: Mod NameTe -> Modules src ss -> Modules src ss
- insertDefTerm :: forall src ss. Source src => Mod (DefTerm src ss) -> Modules src ss -> Modules src ss
- insertTermVT :: forall src ss. Source src => Mod (TermVT src ss '[]) -> NameTe -> Fixity -> Modules src ss -> Modules src ss
- insertFixity :: (forall fx. fx -> ModuleFixy src ss fx -> ModuleFixy src ss fx) -> Fixity -> Module src ss -> Module src ss
- data WithFixity a = WithFixity a Fixity
- withInfix :: a -> Infix -> WithFixity a
- withInfixR :: a -> Precedence -> WithFixity a
- withInfixL :: a -> Precedence -> WithFixity a
- withInfixN :: a -> Precedence -> WithFixity a
- withInfixB :: a -> (Side, Precedence) -> WithFixity a
- withPrefix :: a -> Precedence -> WithFixity a
- withPostfix :: a -> Precedence -> WithFixity a
- data FixitySing fixy where
Type Mod
Type PathMod
Type NameMod
Class ModuleFor
Type Imports
Type Modules
unionModules :: Modules src ss -> Modules src ss -> Either Error_Module (Modules src ss) Source #
Type Error_Module
data Error_Module Source #
Type Module
Module | |
|
module_fixity :: FixitySing fixy -> Module src ss -> ModuleFixy src ss fixy Source #
moduleEmpty :: Module src ss Source #
moduleWhere :: forall src ss. Source src => PathMod -> [DefTerm src ss] -> (PathMod, Module src ss) Source #
Type ModuleFixy
Type Tokenizer
data Tokenizer fixy src ss Source #
Tokenizer | |
|
Type Token_Term
data Token_Term src ss Source #
Token_Term (TermAVT src ss) | |
Token_TermVT (TermVT src ss '[]) | |
Token_Term_Abst src NameTe (AST_Type src) (AST_Term src ss) | |
Token_Term_Var src NameTe | |
Token_Term_Let src NameTe (AST_Term src ss) (AST_Term src ss) | |
Token_Term_App src |
Source src => Eq (Token_Term src ss) Source # | |
Source src => Show (Token_Term src ss) Source # | |
Inj_Source (AST_Term (SrcTe inp ss) ss) (SrcTe inp ss) # | |
Type NameTe
Type CtxTy
data CtxTy src ts where Source #
Typing context
accumulating at each lambda abstraction
the Type
of the introduced variable.
It is built top-down from the closest
including lambda abstraction to the farest.
Type AST_Term
type AST_Term src ss = BinTree (Token_Term src ss) Source #
Abstract Syntax Tree of Token_Term
.
Class Inj_Modules
type Inj_Modules src ss = Inj_ModulesR src ss ss Source #
inj_Modules :: forall src ss. Inj_Modules src ss => Either Error_Module (Modules src ss) Source #
Class Inj_ModulesR
class Inj_ModulesR src ss rs where Source #
inj_ModulesR :: Either Error_Module (Modules src ss) Source #
Inj_ModulesR src ss ([] *) Source # | |
(ModuleFor k src ss s, Inj_ModulesR src ss rs) => Inj_ModulesR src ss ((:) * (Proxy k s) rs) Source # | |
Type DefTerm
lookupDefTerm :: forall src ss fixy. FixitySing fixy -> Imports -> Mod NameTe -> Modules src ss -> Either Error_Module (Tokenizer fixy src ss) Source #
deleteDefTermInfix :: Mod NameTe -> Modules src ss -> Modules src ss Source #
Delete given Mod
NameTe
into module_infix
s of given Modules
.
deleteDefTermPrefix :: Mod NameTe -> Modules src ss -> Modules src ss Source #
Delete given Mod
NameTe
into module_prefix
s of given Modules
.
deleteDefTermPostix :: Mod NameTe -> Modules src ss -> Modules src ss Source #
Delete given Mod
NameTe
into module_postfix
s of given Modules
.
insertDefTerm :: forall src ss. Source src => Mod (DefTerm src ss) -> Modules src ss -> Modules src ss Source #
insertTermVT :: forall src ss. Source src => Mod (TermVT src ss '[]) -> NameTe -> Fixity -> Modules src ss -> Modules src ss Source #
insertFixity :: (forall fx. fx -> ModuleFixy src ss fx -> ModuleFixy src ss fx) -> Fixity -> Module src ss -> Module src ss Source #
Type WithFixity
data WithFixity a Source #
Eq a => Eq (WithFixity a) Source # | |
Show a => Show (WithFixity a) Source # | |
IsString (WithFixity NameTe) Source # | |
withInfix :: a -> Infix -> WithFixity a Source #
withInfixR :: a -> Precedence -> WithFixity a Source #
withInfixL :: a -> Precedence -> WithFixity a Source #
withInfixN :: a -> Precedence -> WithFixity a Source #
withInfixB :: a -> (Side, Precedence) -> WithFixity a Source #
withPrefix :: a -> Precedence -> WithFixity a Source #
withPostfix :: a -> Precedence -> WithFixity a Source #
Type FixitySing
data FixitySing fixy where Source #
FixitySing_Prefix :: FixitySing Unifix | |
FixitySing_Infix :: FixitySing Infix | |
FixitySing_Postfix :: FixitySing Unifix |
Eq (FixitySing fixy) Source # | |
Show (FixitySing fixy) Source # | |