| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Language.Hakaru.Parser.AST
- 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
printSourceSpan :: SourceSpan -> Vector Text -> Text Source #
Constructors
| 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 |
Constructors
| Import a |
data ASTWithImport' a Source #
Constructors
| ASTWithImport' [Import a] (AST' a) |
Instances
| 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 #
Constructors
| 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.
Constructors
| U |
Instances
| 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 #
Constructors
| 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 |