Safe Haskell | None |
---|---|
Language | Haskell2010 |
- data Name = Name !Nat !Text
- nameID :: Name -> Nat
- hintID :: Name -> Text
- type Name' = Text
- data Branch' a
- data Pattern' a
- data PDatum a = DV Name' [Pattern' a]
- data SourceSpan = SourceSpan !SourcePos !SourcePos
- numberLine :: Text -> Int -> Text
- printSourceSpan :: SourceSpan -> Vector Text -> Text
- data Literal'
- data NaryOp
- data ArrayOp
- data TypeAST'
- data Reducer' a
- data AST' a
- = Var a
- | Lam a TypeAST' (AST' a)
- | App (AST' a) (AST' a)
- | Let a (AST' a) (AST' a)
- | If (AST' a) (AST' a) (AST' a)
- | Ann (AST' a) TypeAST'
- | Infinity'
- | ULiteral Literal'
- | NaryOp NaryOp [AST' a]
- | Unit
- | Empty
- | Pair (AST' a) (AST' a)
- | Array a (AST' a) (AST' a)
- | ArrayLiteral [AST' a]
- | Index (AST' a) (AST' a)
- | Case (AST' a) [Branch' a]
- | Dirac (AST' a)
- | Bind a (AST' a) (AST' a)
- | Plate a (AST' a) (AST' a)
- | Chain a (AST' a) (AST' a) (AST' a)
- | Integrate a (AST' a) (AST' a) (AST' a)
- | Summate a (AST' a) (AST' a) (AST' a)
- | Product a (AST' a) (AST' a) (AST' a)
- | Bucket a (AST' a) (AST' a) (Reducer' a)
- | Expect a (AST' a) (AST' a)
- | Observe (AST' a) (AST' a)
- | Msum [AST' a]
- | Data a [a] [TypeAST'] (AST' a)
- | WithMeta (AST' a) SourceSpan
- data Import a = Import a
- data ASTWithImport' a = ASTWithImport' [Import a] (AST' a)
- val :: Literal' -> Some1 Literal
- data PrimOp
- data SomeOp op where
- data SSing = SSing !(Sing a)
- data Branch_ abt = Branch_ Pattern (abt '[] U)
- fmapBranch :: (f '[] U -> g '[] U) -> Branch_ f -> Branch_ g
- foldBranch :: (abt '[] U -> m) -> Branch_ abt -> m
- data Pattern
- data PFun
- data PStruct
- data PCode
- data DFun abt
- data DStruct abt
- data DCode abt
- data Datum abt = Datum Text (DCode abt)
- fmapDatum :: (f '[] U -> g '[] U) -> Datum f -> Datum g
- foldDatum :: Monoid m => (abt '[] U -> m) -> Datum abt -> m
- data Reducer xs abt a where
- R_Fanout_ :: Reducer xs abt U -> Reducer xs abt U -> Reducer xs abt U
- R_Index_ :: Variable U -> abt xs U -> abt (U ': xs) U -> Reducer (U ': xs) abt U -> Reducer xs abt U
- R_Split_ :: abt (U ': xs) U -> Reducer xs abt U -> Reducer xs abt U -> Reducer xs abt U
- R_Nop_ :: Reducer xs abt U
- R_Add_ :: abt (U ': xs) U -> Reducer xs abt U
- data Untyped = U
- nameToVar :: Name -> Variable U
- data Term :: ([Untyped] -> Untyped -> *) -> Untyped -> * where
- Lam_ :: SSing -> abt '[U] U -> Term abt U
- App_ :: abt '[] U -> abt '[] U -> Term abt U
- Let_ :: abt '[] U -> abt '[U] U -> Term abt U
- Ann_ :: SSing -> abt '[] U -> Term abt U
- CoerceTo_ :: Some2 Coercion -> abt '[] U -> Term abt U
- UnsafeTo_ :: Some2 Coercion -> abt '[] U -> Term abt U
- PrimOp_ :: PrimOp -> [abt '[] U] -> Term abt U
- ArrayOp_ :: ArrayOp -> [abt '[] U] -> Term abt U
- MeasureOp_ :: SomeOp MeasureOp -> [abt '[] U] -> Term abt U
- NaryOp_ :: NaryOp -> [abt '[] U] -> Term abt U
- Literal_ :: Some1 Literal -> Term abt U
- Empty_ :: Term abt U
- Pair_ :: abt '[] U -> abt '[] U -> Term abt U
- Array_ :: abt '[] U -> abt '[U] U -> Term abt U
- ArrayLiteral_ :: [abt '[] U] -> Term abt U
- Datum_ :: Datum abt -> Term abt U
- Case_ :: abt '[] U -> [Branch_ abt] -> Term abt U
- Dirac_ :: abt '[] U -> Term abt U
- MBind_ :: abt '[] U -> abt '[U] U -> Term abt U
- Plate_ :: abt '[] U -> abt '[U] U -> Term abt U
- Chain_ :: abt '[] U -> abt '[] U -> abt '[U] U -> Term abt U
- Integrate_ :: abt '[] U -> abt '[] U -> abt '[U] U -> Term abt U
- Summate_ :: abt '[] U -> abt '[] U -> abt '[U] U -> Term abt U
- Product_ :: abt '[] U -> abt '[] U -> abt '[U] U -> Term abt U
- Bucket_ :: abt '[] U -> abt '[] U -> Reducer xs abt U -> Term abt U
- Expect_ :: abt '[] U -> abt '[U] U -> Term abt U
- Observe_ :: abt '[] U -> abt '[] U -> Term abt U
- Superpose_ :: NonEmpty (abt '[] U, abt '[] U) -> Term abt U
- Reject_ :: Term abt U
- type U_ABT = MetaABT SourceSpan Term
- type AST = U_ABT '[] U
- type MetaTerm = Term U_ABT U
- type Branch = Branch_ U_ABT
- type DFun_ = DFun U_ABT
- type DStruct_ = DStruct U_ABT
- type DCode_ = DCode U_ABT
Documentation
data SourceSpan Source #
printSourceSpan :: SourceSpan -> Vector Text -> Text Source #
Var a | |
Lam a TypeAST' (AST' a) | |
App (AST' a) (AST' a) | |
Let a (AST' a) (AST' a) | |
If (AST' a) (AST' a) (AST' a) | |
Ann (AST' a) TypeAST' | |
Infinity' | |
ULiteral Literal' | |
NaryOp NaryOp [AST' a] | |
Unit | |
Empty | |
Pair (AST' a) (AST' a) | |
Array a (AST' a) (AST' a) | |
ArrayLiteral [AST' a] | |
Index (AST' a) (AST' a) | |
Case (AST' a) [Branch' a] | |
Dirac (AST' a) | |
Bind a (AST' a) (AST' a) | |
Plate a (AST' a) (AST' a) | |
Chain a (AST' a) (AST' a) (AST' a) | |
Integrate a (AST' a) (AST' a) (AST' a) | |
Summate a (AST' a) (AST' a) (AST' a) | |
Product a (AST' a) (AST' a) (AST' a) | |
Bucket a (AST' a) (AST' a) (Reducer' a) | |
Expect a (AST' a) (AST' a) | |
Observe (AST' a) (AST' a) | |
Msum [AST' a] | |
Data a [a] [TypeAST'] (AST' a) | |
WithMeta (AST' a) SourceSpan |
data ASTWithImport' a Source #
ASTWithImport' [Import a] (AST' a) |
Eq a => Eq (ASTWithImport' a) Source # | |
Show a => Show (ASTWithImport' a) Source # | |
foldBranch :: (abt '[] U -> m) -> Branch_ abt -> m Source #
data Reducer xs abt a where Source #
R_Fanout_ :: Reducer xs abt U -> Reducer xs abt U -> Reducer xs abt U | |
R_Index_ :: Variable U -> abt xs U -> abt (U ': xs) U -> Reducer (U ': xs) abt U -> Reducer xs abt U | |
R_Split_ :: abt (U ': xs) U -> Reducer xs abt U -> Reducer xs abt U -> Reducer xs abt U | |
R_Nop_ :: Reducer xs abt U | |
R_Add_ :: abt (U ': xs) U -> Reducer xs abt U |
The kind containing exactly one type.
Read Untyped Source # | |
Show Untyped Source # | |
SingI Untyped U Source # | |
Foldable21 Untyped Untyped [Untyped] Term Source # | |
Functor21 Untyped Untyped [Untyped] Term Source # | |
Foldable21 Untyped Untyped [Untyped] (Reducer xs) Source # | |
Functor21 Untyped Untyped [Untyped] (Reducer xs) Source # | |
JmEq1 Untyped (Sing Untyped) Source # | |
Eq1 Untyped (Sing Untyped) Source # | |
Show1 Untyped (Sing Untyped) Source # | |
Eq (Sing Untyped a) Source # | |
Show (Sing Untyped a) Source # | |
data Sing Untyped Source # | |
data Term :: ([Untyped] -> Untyped -> *) -> Untyped -> * where Source #
Lam_ :: SSing -> abt '[U] U -> Term abt U | |
App_ :: abt '[] U -> abt '[] U -> Term abt U | |
Let_ :: abt '[] U -> abt '[U] U -> Term abt U | |
Ann_ :: SSing -> abt '[] U -> Term abt U | |
CoerceTo_ :: Some2 Coercion -> abt '[] U -> Term abt U | |
UnsafeTo_ :: Some2 Coercion -> abt '[] U -> Term abt U | |
PrimOp_ :: PrimOp -> [abt '[] U] -> Term abt U | |
ArrayOp_ :: ArrayOp -> [abt '[] U] -> Term abt U | |
MeasureOp_ :: SomeOp MeasureOp -> [abt '[] U] -> Term abt U | |
NaryOp_ :: NaryOp -> [abt '[] U] -> Term abt U | |
Literal_ :: Some1 Literal -> Term abt U | |
Empty_ :: Term abt U | |
Pair_ :: abt '[] U -> abt '[] U -> Term abt U | |
Array_ :: abt '[] U -> abt '[U] U -> Term abt U | |
ArrayLiteral_ :: [abt '[] U] -> Term abt U | |
Datum_ :: Datum abt -> Term abt U | |
Case_ :: abt '[] U -> [Branch_ abt] -> Term abt U | |
Dirac_ :: abt '[] U -> Term abt U | |
MBind_ :: abt '[] U -> abt '[U] U -> Term abt U | |
Plate_ :: abt '[] U -> abt '[U] U -> Term abt U | |
Chain_ :: abt '[] U -> abt '[] U -> abt '[U] U -> Term abt U | |
Integrate_ :: abt '[] U -> abt '[] U -> abt '[U] U -> Term abt U | |
Summate_ :: abt '[] U -> abt '[] U -> abt '[U] U -> Term abt U | |
Product_ :: abt '[] U -> abt '[] U -> abt '[U] U -> Term abt U | |
Bucket_ :: abt '[] U -> abt '[] U -> Reducer xs abt U -> Term abt U | |
Expect_ :: abt '[] U -> abt '[U] U -> Term abt U | |
Observe_ :: abt '[] U -> abt '[] U -> Term abt U | |
Superpose_ :: NonEmpty (abt '[] U, abt '[] U) -> Term abt U | |
Reject_ :: Term abt U |