Safe Haskell | None |
---|---|
Language | Haskell2010 |
- data M = M
- data TermSymbol a b = a :| b
- type family TermArg x :: *
- class TermStaticVar t i where
- class TableStaticVar u c i where
- data TermState s i e = TState {
- tS :: !s
- iIx :: !(RunningIndex i)
- eTS :: !e
- class TermStream m t s i where
- addTermStream1 :: (Monad m, TermStream m (TermSymbol M t) (Elm (Term1 s) (Z :. i)) (Z :. i)) => t -> Context i -> i -> i -> Stream m s -> Stream m (s, TermArg t, RunningIndex i)
- newtype Term1 s = Term1 s
- elmTerm1 :: s -> i -> Elm (Term1 s) (Z :. i)
- type TmkCtx1 m ls t i = (Monad m, MkStream m ls i, TermStream m (TermSymbol M t) (Elm (Term1 (Elm ls i)) (Z :. i)) (Z :. i), Element ls i, TermStaticVar t i)
- type TstCtx m ts s x0 sixty is i = (Monad m, TermStream m ts s is, GetIndex (RunningIndex sixty) (RunningIndex (is :. i)), GetIx (RunningIndex sixty) (RunningIndex (is :. i)) ~ RunningIndex i, Element x0 sixty, s ~ Elm x0 sixty)
- type PRI is i = Proxy (RunningIndex (is :. i))
Multi-dimensional extension
Terminates a multi-dimensional terminal symbol stack.
data TermSymbol a b Source #
Terminal symbols are stacked together with a
tails and b
head.
a :| b infixl 2 |
type family TermArg x :: * Source #
Extracts the type of a multi-dimensional terminal argument.
type TermArg M Source # | |
type TermArg Deletion Source # | |
type TermArg Edge Source # | |
type TermArg Epsilon Source # | |
type TermArg (PeekIndex i) Source # | |
type TermArg (TermSymbol a b) Source # | |
type TermArg (Chr r x) Source # | |
type TermArg (Strng v x) Source # | |
type TermArg (TwIRec m c i x) Source # | |
type TermArg (TwITbl m arr c i x) Source # | |
type TermArg (TwITblBt arr c i x mF mB r) Source # | |
class TermStaticVar t i where Source #
For multi-dimensional terminals we need to be able to calculate how the static/variable signal changes and if the index for the inner part needs to be modified.
termStaticVar :: t -> Context i -> i -> Context i Source #
termStreamIndex :: t -> Context i -> i -> i Source #
TermStaticVar M Z Source # | |
(TermStaticVar a is, TermStaticVar b i) => TermStaticVar (TermSymbol a b) ((:.) is i) Source # | |
class TableStaticVar u c i where Source #
tableStaticVar :: Proxy u -> c -> Context i -> i -> Context i Source #
tableStreamIndex :: Proxy u -> c -> Context i -> i -> i Source #
TableStaticVar c u Z Source # | |
(TableStaticVar us cs is, TableStaticVar u c i) => TableStaticVar ((:.) us u) ((:.) cs c) ((:.) is i) Source # | |
TState | |
|
class TermStream m t s i where Source #
addTermStream1 :: (Monad m, TermStream m (TermSymbol M t) (Elm (Term1 s) (Z :. i)) (Z :. i)) => t -> Context i -> i -> i -> Stream m s -> Stream m (s, TermArg t, RunningIndex i) Source #
TODO need t -> ElmType t
type function
TODO need to actually return an ElmType t
can do that instead of
returning u
!!!
Term1 s |
type TmkCtx1 m ls t i = (Monad m, MkStream m ls i, TermStream m (TermSymbol M t) (Elm (Term1 (Elm ls i)) (Z :. i)) (Z :. i), Element ls i, TermStaticVar t i) Source #
Term MkStream
context
type TstCtx m ts s x0 sixty is i = (Monad m, TermStream m ts s is, GetIndex (RunningIndex sixty) (RunningIndex (is :. i)), GetIx (RunningIndex sixty) (RunningIndex (is :. i)) ~ RunningIndex i, Element x0 sixty, s ~ Elm x0 sixty) Source #
Term TermStream
context
Orphan instances
RuleContext Z Source # | |
Monad m => MkStream m S Z Source # | |
(RuleContext is, RuleContext i) => RuleContext ((:.) is i) Source # | |