ADPfusion-0.6.0.0: Efficient, high-level dynamic programming.

Safe HaskellNone
LanguageHaskell2010

ADP.Fusion.Core

Description

Generalized fusion system for grammars.

This module re-exports only the core functionality.

NOTE Symbols typically do not check bound data for consistency. If you, say, bind a terminal symbol to an input of length 0 and then run your grammar, you probably get errors, garbled data or random crashes. Such checks are done via asserts in non-production code.

Synopsis

Documentation

data StreamAppend a b Source #

Constructors

SAL a 
SAR b 

(<<<) :: forall k m initCtx symbols i b. (Monad m, Build symbols, Element (Stack symbols) i, Apply (Arg (Stack symbols) -> b), initCtx ~ InitialContext i, MkStream m initCtx (Stack symbols) i) => Fun (Arg (Stack symbols) -> b) -> symbols -> LimitType i -> i -> Stream m b infixl 8 Source #

Apply a function to symbols on the RHS of a production rule. Builds the stack of symbols from xs using build, then hands this stack to mkStream together with the initial iniT telling mkStream that we are in the "outer" position. Once the stream has been created, we map getArg to get just the arguments in the stack, and finally apply the function f.

(|||) :: Monad m => (t1 -> t2 -> Stream m a) -> (t1 -> t2 -> Stream m a) -> t1 -> t2 -> Stream m a infixl 7 Source #

Combine two RHSs to give a choice between parses.

streamappend :: Monad m => Stream m a -> Stream m a -> Stream m a Source #

(...) :: (t1 -> t2 -> t3) -> (t3 -> t4) -> t1 -> t2 -> t4 infixl 5 Source #

Applies the objective function h to a stream s. The objective function reduces the stream to a single optimal value (or some vector of co-optimal things).

(~~) :: a -> b -> Pair a b infixl 9 Source #

Separator between RHS symbols.

(%) :: a -> b -> Pair a b infixl 9 Source #

This separator looks much paper "on paper" and is not widely used otherwise.

data family Elm x i :: * Source #

Instances
(SplitIxCol uId (SameSid uId (Elm ls i)) (Elm ls i), Zconcat (SplitIxTy uId (SameSid uId (Elm ls i)) (Elm ls i)) (SplitIxTy uId (SameSid uId (TermSymbol a b)) (TermSymbol a b))) => SplitIxCol uId True (Elm (ls :!: TermSymbol a b) i) Source # 
Instance details

Defined in ADP.Fusion.Core.SynVar.Split.Type

Associated Types

type SplitIxTy uId True (Elm (ls :!: TermSymbol a b) i) :: Type Source #

Methods

splitIxCol :: Proxy uId -> Proxy True -> Elm (ls :!: TermSymbol a b) i -> SplitIxTy uId True (Elm (ls :!: TermSymbol a b) i) Source #

SplitIxCol uId (SameSid uId (Elm ls i)) (Elm ls i) => SplitIxCol uId True (Elm (ls :!: Split sId splitType (TwITblBt b s arr c j x mF mB r)) i) Source # 
Instance details

Defined in ADP.Fusion.Core.SynVar.Split.Type

Associated Types

type SplitIxTy uId True (Elm (ls :!: Split sId splitType (TwITblBt b s arr c j x mF mB r)) i) :: Type Source #

Methods

splitIxCol :: Proxy uId -> Proxy True -> Elm (ls :!: Split sId splitType (TwITblBt b s arr c j x mF mB r)) i -> SplitIxTy uId True (Elm (ls :!: Split sId splitType (TwITblBt b s arr c j x mF mB r)) i) Source #

SplitIxCol uId (SameSid uId (Elm ls i)) (Elm ls i) => SplitIxCol uId True (Elm (ls :!: Split sId splitType (TwITbl b s m arr c j x)) i) Source # 
Instance details

Defined in ADP.Fusion.Core.SynVar.Split.Type

Associated Types

type SplitIxTy uId True (Elm (ls :!: Split sId splitType (TwITbl b s m arr c j x)) i) :: Type Source #

Methods

splitIxCol :: Proxy uId -> Proxy True -> Elm (ls :!: Split sId splitType (TwITbl b s m arr c j x)) i -> SplitIxTy uId True (Elm (ls :!: Split sId splitType (TwITbl b s m arr c j x)) i) Source #

(SplitIxCol uId (SameSid uId (Elm ls i)) (Elm ls i), Element (ls :!: l) i, RecElm (ls :!: l) i ~ Elm ls i) => SplitIxCol uId False (Elm (ls :!: l) i) Source # 
Instance details

Defined in ADP.Fusion.Core.SynVar.Split.Type

Associated Types

type SplitIxTy uId False (Elm (ls :!: l) i) :: Type Source #

Methods

splitIxCol :: Proxy uId -> Proxy False -> Elm (ls :!: l) i -> SplitIxTy uId False (Elm (ls :!: l) i) Source #

SplitIxCol uId b (Elm S i) Source # 
Instance details

Defined in ADP.Fusion.Core.SynVar.Split.Type

Associated Types

type SplitIxTy uId b (Elm S i) :: Type Source #

Methods

splitIxCol :: Proxy uId -> Proxy b -> Elm S i -> SplitIxTy uId b (Elm S i) Source #

(Show i, Show (RunningIndex i), Show (TermArg (TermSymbol a b)), Show (Elm ls i)) => Show (Elm (ls :!: TermSymbol a b) i) Source # 
Instance details

Defined in ADP.Fusion.Core.Multi

Methods

showsPrec :: Int -> Elm (ls :!: TermSymbol a b) i -> ShowS #

show :: Elm (ls :!: TermSymbol a b) i -> String #

showList :: [Elm (ls :!: TermSymbol a b) i] -> ShowS #

(Show i, Show (RunningIndex i), Show (v x), Show (Elm ls i)) => Show (Elm (ls :!: Test v x) i) Source # 
Instance details

Defined in ADP.Fusion.Core.Term.Test

Methods

showsPrec :: Int -> Elm (ls :!: Test v x) i -> ShowS #

show :: Elm (ls :!: Test v x) i -> String #

showList :: [Elm (ls :!: Test v x) i] -> ShowS #

(Show i, Show (RunningIndex i), Show (Elm ls i)) => Show (Elm (ls :!: Switch) i) Source # 
Instance details

Defined in ADP.Fusion.Core.Term.Switch

Methods

showsPrec :: Int -> Elm (ls :!: Switch) i -> ShowS #

show :: Elm (ls :!: Switch) i -> String #

showList :: [Elm (ls :!: Switch) i] -> ShowS #

(Show i, Show (RunningIndex i), Show (v x), Show (Elm ls i)) => Show (Elm (ls :!: Str linked minSz maxSz v x) i) Source # 
Instance details

Defined in ADP.Fusion.Core.Term.Str

Methods

showsPrec :: Int -> Elm (ls :!: Str linked minSz maxSz v x) i -> ShowS #

show :: Elm (ls :!: Str linked minSz maxSz v x) i -> String #

showList :: [Elm (ls :!: Str linked minSz maxSz v x) i] -> ShowS #

(Show i, Show (RunningIndex i), Show (Elm ls i)) => Show (Elm (ls :!: PeekIndex i) i) Source # 
Instance details

Defined in ADP.Fusion.Core.Term.PeekIndex

Methods

showsPrec :: Int -> Elm (ls :!: PeekIndex i) i -> ShowS #

show :: Elm (ls :!: PeekIndex i) i -> String #

showList :: [Elm (ls :!: PeekIndex i) i] -> ShowS #

(Show i, Show (RunningIndex i), Show (v x), Show (Elm ls i)) => Show (Elm (ls :!: MultiChr c v x) i) Source # 
Instance details

Defined in ADP.Fusion.Core.Term.MultiChr

Methods

showsPrec :: Int -> Elm (ls :!: MultiChr c v x) i -> ShowS #

show :: Elm (ls :!: MultiChr c v x) i -> String #

showList :: [Elm (ls :!: MultiChr c v x) i] -> ShowS #

(Show i, Show (RunningIndex i), Show (Elm ls i)) => Show (Elm (ls :!: Edge) i) Source # 
Instance details

Defined in ADP.Fusion.Core.Term.Edge

Methods

showsPrec :: Int -> Elm (ls :!: Edge) i -> ShowS #

show :: Elm (ls :!: Edge) i -> String #

showList :: [Elm (ls :!: Edge) i] -> ShowS #

(Show i, Show (RunningIndex i), Show r, Show (Elm ls i)) => Show (Elm (ls :!: Chr r x) i) Source # 
Instance details

Defined in ADP.Fusion.Core.Term.Chr

Methods

showsPrec :: Int -> Elm (ls :!: Chr r x) i -> ShowS #

show :: Elm (ls :!: Chr r x) i -> String #

showList :: [Elm (ls :!: Chr r x) i] -> ShowS #

(Show x, Show i, Show (RunningIndex i), Show (Elm ls i)) => Show (Elm (ls :!: TwITblBt b s arr c i x mF mB r) i) Source # 
Instance details

Defined in ADP.Fusion.Core.SynVar.Array.Type

Methods

showsPrec :: Int -> Elm (ls :!: TwITblBt b s arr c i x mF mB r) i -> ShowS #

show :: Elm (ls :!: TwITblBt b s arr c i x mF mB r) i -> String #

showList :: [Elm (ls :!: TwITblBt b s arr c i x mF mB r) i] -> ShowS #

(Show i, Show (RunningIndex i), Show (Elm ls i), Show x) => Show (Elm (ls :!: TwITbl b s m arr c j x) i) Source # 
Instance details

Defined in ADP.Fusion.Core.SynVar.Array.Type

Methods

showsPrec :: Int -> Elm (ls :!: TwITbl b s m arr c j x) i -> ShowS #

show :: Elm (ls :!: TwITbl b s m arr c j x) i -> String #

showList :: [Elm (ls :!: TwITbl b s m arr c j x) i] -> ShowS #

Show (RunningIndex ix) => Show (Elm S ix) Source # 
Instance details

Defined in ADP.Fusion.Core.Classes

Methods

showsPrec :: Int -> Elm S ix -> ShowS #

show :: Elm S ix -> String #

showList :: [Elm S ix] -> ShowS #

newtype Elm S i Source # 
Instance details

Defined in ADP.Fusion.Core.Classes

newtype Elm S i = ElmS (RunningIndex i)
type SplitIxTy uId True (Elm (ls :!: TermSymbol a b) i) Source # 
Instance details

Defined in ADP.Fusion.Core.SynVar.Split.Type

type SplitIxTy uId True (Elm (ls :!: TermSymbol a b) i) = Zpp (SplitIxTy uId (SameSid uId (Elm ls i)) (Elm ls i)) (SplitIxTy uId (SameSid uId (TermSymbol a b)) (TermSymbol a b))
type SplitIxTy uId True (Elm (ls :!: Split sId splitType (TwITblBt b s arr c j x mF mB r)) i) Source # 
Instance details

Defined in ADP.Fusion.Core.SynVar.Split.Type

type SplitIxTy uId True (Elm (ls :!: Split sId splitType (TwITblBt b s arr c j x mF mB r)) i) = SplitIxTy uId (SameSid uId (Elm ls i)) (Elm ls i) :. i
type SplitIxTy uId True (Elm (ls :!: Split sId splitType (TwITbl b s m arr c j x)) i) Source # 
Instance details

Defined in ADP.Fusion.Core.SynVar.Split.Type

type SplitIxTy uId True (Elm (ls :!: Split sId splitType (TwITbl b s m arr c j x)) i) = SplitIxTy uId (SameSid uId (Elm ls i)) (Elm ls i) :. i
type SplitIxTy uId False (Elm (ls :!: l) i) Source # 
Instance details

Defined in ADP.Fusion.Core.SynVar.Split.Type

type SplitIxTy uId False (Elm (ls :!: l) i) = SplitIxTy uId (SameSid uId (Elm ls i)) (Elm ls i)
type SplitIxTy uId b (Elm S i) Source # 
Instance details

Defined in ADP.Fusion.Core.SynVar.Split.Type

type SplitIxTy uId b (Elm S i) = Z
newtype Elm (Term1 s) (Z :. i) Source # 
Instance details

Defined in ADP.Fusion.Core.Multi

newtype Elm (Term1 s) (Z :. i) = ElmTerm1 s
newtype Elm (SynVar1 s) (Z :. i) Source # 
Instance details

Defined in ADP.Fusion.Core.SynVar.Indices

newtype Elm (SynVar1 s) (Z :. i) = ElmSynVar1 s
data Elm (ls :!: TermSymbol a b) i Source # 
Instance details

Defined in ADP.Fusion.Core.Multi

data Elm (ls :!: TermSymbol a b) i = ElmTS !(TermArg (TermSymbol a b)) !(RunningIndex i) !(Elm ls i)
data Elm (ls :!: Test v x) i Source # 
Instance details

Defined in ADP.Fusion.Core.Term.Test

data Elm (ls :!: Test v x) i = ElmTest !(v x) !(RunningIndex i) !(Elm ls i)
data Elm (ls :!: Switch) i Source # 
Instance details

Defined in ADP.Fusion.Core.Term.Switch

data Elm (ls :!: Switch) i = ElmSwitch !(RunningIndex i) !(Elm ls i)
data Elm (ls :!: Str linked minSz maxSz v x) i Source # 
Instance details

Defined in ADP.Fusion.Core.Term.Str

data Elm (ls :!: Str linked minSz maxSz v x) i = ElmStr !(v x) !(RunningIndex i) !(Elm ls i)
data Elm (ls :!: MultiChr c v x) i Source # 
Instance details

Defined in ADP.Fusion.Core.Term.MultiChr

data Elm (ls :!: MultiChr c v x) i = ElmMultiChr !(v x) !(RunningIndex i) !(Elm ls i)
data Elm (ls :!: Epsilon lg) i Source # 
Instance details

Defined in ADP.Fusion.Core.Term.Epsilon

data Elm (ls :!: Epsilon lg) i = ElmEpsilon !(RunningIndex i) !(Elm ls i)
data Elm (ls :!: Edge) i Source # 
Instance details

Defined in ADP.Fusion.Core.Term.Edge

data Elm (ls :!: Edge) i = ElmEdge !(From :. To) !(RunningIndex i) !(Elm ls i)
data Elm (ls :!: Deletion) i Source # 
Instance details

Defined in ADP.Fusion.Core.Term.Deletion

data Elm (ls :!: Deletion) i = ElmDeletion !(RunningIndex i) !(Elm ls i)
data Elm (ls :!: Chr r x) i Source # 
Instance details

Defined in ADP.Fusion.Core.Term.Chr

data Elm (ls :!: Chr r x) i = ElmChr !r !(RunningIndex i) !(Elm ls i)
data Elm (ls :!: TwIRec m c u x) i Source # 
Instance details

Defined in ADP.Fusion.Core.SynVar.Recursive.Type

data Elm (ls :!: TwIRec m c u x) i = ElmIRec !x !(RunningIndex i) !(Elm ls i)
data Elm (ls :!: TwIRecBt c u x mF mB r) i Source # 
Instance details

Defined in ADP.Fusion.Core.SynVar.Recursive.Type

data Elm (ls :!: TwIRecBt c u x mF mB r) i = ElmBtIRec !x [r] !(RunningIndex i) !(Elm ls i)
data Elm (ls :!: TwITbl b s m arr c j x) i Source # 
Instance details

Defined in ADP.Fusion.Core.SynVar.Array.Type

data Elm (ls :!: TwITbl b s m arr c j x) i = ElmITbl !x !(RunningIndex i) !(Elm ls i)
data Elm (ls :!: TwITblBt b s arr c j x mF mB r) i Source # 
Instance details

Defined in ADP.Fusion.Core.SynVar.Array.Type

data Elm (ls :!: TwITblBt b s arr c j x mF mB r) i = ElmBtITbl !x [r] !(RunningIndex i) !(Elm ls i)
data Elm (ls :!: Split uId splitType (TwITblBt b s arr c j x mF mB r)) i Source # 
Instance details

Defined in ADP.Fusion.Core.SynVar.Split.Type

data Elm (ls :!: Split uId splitType (TwITblBt b s arr c j x mF mB r)) i = ElmSplitBtITbl !(Proxy uId) !(CalcSplitType splitType (x, [r])) !(RunningIndex i) !(Elm ls i) !i
data Elm (ls :!: Split uId splitType (TwITbl b s m arr c j x)) i Source # 
Instance details

Defined in ADP.Fusion.Core.SynVar.Split.Type

data Elm (ls :!: Split uId splitType (TwITbl b s m arr c j x)) i = ElmSplitITbl !(Proxy uId) !(CalcSplitType splitType x) !(RunningIndex i) !(Elm ls i) !i
data Elm (ls :!: PeekIndex i) i Source # 
Instance details

Defined in ADP.Fusion.Core.Term.PeekIndex

data Elm (ls :!: PeekIndex i) i = ElmPeekIndex !i !(RunningIndex i) !(Elm ls i)

type PRI is i = Proxy (RunningIndex (is :. i)) Source #

Shorthand for proxifying getIndex

type TermStreamContext m (pos :: k) ts s x0 sixty is i = (Monad m, TermStream m pos 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 MkStream context

TODO prepare for deletion

Term TermStream context

newtype Term1 s Source #

Constructors

Term1 s 
Instances
(s ~ Elm x0 i, Element x0 i) => Element (Term1 s) (Z :. i) Source # 
Instance details

Defined in ADP.Fusion.Core.Multi

Associated Types

data Elm (Term1 s) (Z :. i) :: Type Source #

type RecElm (Term1 s) (Z :. i) :: Type Source #

type Arg (Term1 s) :: Type Source #

Methods

getArg :: Elm (Term1 s) (Z :. i) -> Arg (Term1 s) Source #

getIdx :: Elm (Term1 s) (Z :. i) -> RunningIndex (Z :. i) Source #

getElm :: Elm (Term1 s) (Z :. i) -> RecElm (Term1 s) (Z :. i) Source #

newtype Elm (Term1 s) (Z :. i) Source # 
Instance details

Defined in ADP.Fusion.Core.Multi

newtype Elm (Term1 s) (Z :. i) = ElmTerm1 s

class TermStream m pos t s i where Source #

Methods

termStream :: Proxy pos -> t -> LimitType i -> i -> Stream m (TermState s Z Z) -> Stream m (TermState s i (TermArg t)) Source #

Instances
Monad m => TermStream m (pos :: k) M s Z Source # 
Instance details

Defined in ADP.Fusion.Core.Multi

Methods

termStream :: Proxy pos -> M -> LimitType Z -> Z -> Stream m (TermState s Z Z) -> Stream m (TermState s Z (TermArg M)) Source #

TermStreamContext m ps ts s x0 i0 is (PointL O) => TermStream m (ps :. OStatic d :: Type) (TermSymbol ts (Chr r x)) s (is :. PointL O) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.Chr

Methods

termStream :: Proxy (ps :. OStatic d) -> TermSymbol ts (Chr r x) -> LimitType (is :. PointL O) -> (is :. PointL O) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. PointL O) (TermArg (TermSymbol ts (Chr r x)))) Source #

TermStreamContext m ps ts s x0 i0 is (PointL I) => TermStream m (ps :. IStatic d :: Type) (TermSymbol ts (Chr r x)) s (is :. PointL I) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.Chr

Methods

termStream :: Proxy (ps :. IStatic d) -> TermSymbol ts (Chr r x) -> LimitType (is :. PointL I) -> (is :. PointL I) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. PointL I) (TermArg (TermSymbol ts (Chr r x)))) Source #

TermStreamContext m ps ts s x0 i0 is (PointL O) => TermStream m (ps :. OStatic d :: Type) (TermSymbol ts Deletion) s (is :. PointL O) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.Deletion

Methods

termStream :: Proxy (ps :. OStatic d) -> TermSymbol ts Deletion -> LimitType (is :. PointL O) -> (is :. PointL O) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. PointL O) (TermArg (TermSymbol ts Deletion))) Source #

TermStreamContext m ps ts s x0 i0 is (PointL I) => TermStream m (ps :. IVariable d :: Type) (TermSymbol ts Deletion) s (is :. PointL I) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.Deletion

TermStreamContext m ps ts s x0 i0 is (PointL I) => TermStream m (ps :. IStatic d :: Type) (TermSymbol ts Deletion) s (is :. PointL I) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.Deletion

Methods

termStream :: Proxy (ps :. IStatic d) -> TermSymbol ts Deletion -> LimitType (is :. PointL I) -> (is :. PointL I) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. PointL I) (TermArg (TermSymbol ts Deletion))) Source #

TermStreamContext m ps ts s x0 i0 is (PointL O) => TermStream m (ps :. OStatic d :: Type) (TermSymbol ts (Epsilon lg)) s (is :. PointL O) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.Epsilon

Methods

termStream :: Proxy (ps :. OStatic d) -> TermSymbol ts (Epsilon lg) -> LimitType (is :. PointL O) -> (is :. PointL O) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. PointL O) (TermArg (TermSymbol ts (Epsilon lg)))) Source #

TermStreamContext m ps ts s x0 i0 is (PointL I) => TermStream m (ps :. IStatic d :: Type) (TermSymbol ts (Epsilon lg)) s (is :. PointL I) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.Epsilon

Methods

termStream :: Proxy (ps :. IStatic d) -> TermSymbol ts (Epsilon lg) -> LimitType (is :. PointL I) -> (is :. PointL I) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. PointL I) (TermArg (TermSymbol ts (Epsilon lg)))) Source #

(TermStreamContext m ps ts s x0 i0 is (PointL O), KnownNat c) => TermStream m (ps :. OStatic d :: Type) (TermSymbol ts (MultiChr c v x)) s (is :. PointL O) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.MultiChr

Methods

termStream :: Proxy (ps :. OStatic d) -> TermSymbol ts (MultiChr c v x) -> LimitType (is :. PointL O) -> (is :. PointL O) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. PointL O) (TermArg (TermSymbol ts (MultiChr c v x)))) Source #

(TermStreamContext m ps ts s x0 i0 is (PointL I), KnownNat c) => TermStream m (ps :. IStatic d :: Type) (TermSymbol ts (MultiChr c v x)) s (is :. PointL I) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.MultiChr

Methods

termStream :: Proxy (ps :. IStatic d) -> TermSymbol ts (MultiChr c v x) -> LimitType (is :. PointL I) -> (is :. PointL I) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. PointL I) (TermArg (TermSymbol ts (MultiChr c v x)))) Source #

TermStreamContext m ps ts s x0 i0 is (PointL I) => TermStream m (ps :. IStatic d :: Type) (TermSymbol ts (Str (Nothing :: Maybe Symbol) minSz (Nothing :: Maybe Nat) v x)) s (is :. PointL I) Source #

Note that the minSz should automatically work out due to the encoding in d.

Instance details

Defined in ADP.Fusion.PointL.Term.Str

Methods

termStream :: Proxy (ps :. IStatic d) -> TermSymbol ts (Str Nothing minSz Nothing v x) -> LimitType (is :. PointL I) -> (is :. PointL I) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. PointL I) (TermArg (TermSymbol ts (Str Nothing minSz Nothing v x)))) Source #

TermStreamContext m ps ts s x0 i0 is (PointL O) => TermStream m (ps :. OStatic d :: Type) (TermSymbol ts Switch) s (is :. PointL O) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.Switch

Methods

termStream :: Proxy (ps :. OStatic d) -> TermSymbol ts Switch -> LimitType (is :. PointL O) -> (is :. PointL O) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. PointL O) (TermArg (TermSymbol ts Switch))) Source #

TermStreamContext m ps ts s x0 i0 is (PointL I) => TermStream m (ps :. IStatic d :: Type) (TermSymbol ts Switch) s (is :. PointL I) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.Switch

Methods

termStream :: Proxy (ps :. IStatic d) -> TermSymbol ts Switch -> LimitType (is :. PointL I) -> (is :. PointL I) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. PointL I) (TermArg (TermSymbol ts Switch))) Source #

TermStreamContext m ps ts s x0 i0 is (PointR I) => TermStream m (ps :. IVariable d :: Type) (TermSymbol ts (Chr r x)) s (is :. PointR I) Source # 
Instance details

Defined in ADP.Fusion.PointR.Term.Chr

Methods

termStream :: Proxy (ps :. IVariable d) -> TermSymbol ts (Chr r x) -> LimitType (is :. PointR I) -> (is :. PointR I) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. PointR I) (TermArg (TermSymbol ts (Chr r x)))) Source #

TermStreamContext m ps ts s x0 i0 is (PointR I) => TermStream m (ps :. IStatic d :: Type) (TermSymbol ts (Chr r x)) s (is :. PointR I) Source # 
Instance details

Defined in ADP.Fusion.PointR.Term.Chr

Methods

termStream :: Proxy (ps :. IStatic d) -> TermSymbol ts (Chr r x) -> LimitType (is :. PointR I) -> (is :. PointR I) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. PointR I) (TermArg (TermSymbol ts (Chr r x)))) Source #

TermStreamContext m ps ts s x0 i0 is (PointR I) => TermStream m (ps :. IVariable d :: Type) (TermSymbol ts Deletion) s (is :. PointR I) Source # 
Instance details

Defined in ADP.Fusion.PointR.Term.Deletion

TermStreamContext m ps ts s x0 i0 is (PointR I) => TermStream m (ps :. IStatic d :: Type) (TermSymbol ts Deletion) s (is :. PointR I) Source # 
Instance details

Defined in ADP.Fusion.PointR.Term.Deletion

Methods

termStream :: Proxy (ps :. IStatic d) -> TermSymbol ts Deletion -> LimitType (is :. PointR I) -> (is :. PointR I) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. PointR I) (TermArg (TermSymbol ts Deletion))) Source #

TermStreamContext m ps ts s x0 i0 is (PointR I) => TermStream m (ps :. IStatic d :: Type) (TermSymbol ts (Epsilon lg)) s (is :. PointR I) Source # 
Instance details

Defined in ADP.Fusion.PointR.Term.Epsilon

Methods

termStream :: Proxy (ps :. IStatic d) -> TermSymbol ts (Epsilon lg) -> LimitType (is :. PointR I) -> (is :. PointR I) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. PointR I) (TermArg (TermSymbol ts (Epsilon lg)))) Source #

(TermStreamContext m ps ts s x0 i0 is (PointR I), KnownNat c) => TermStream m (ps :. IVariable d :: Type) (TermSymbol ts (MultiChr c v x)) s (is :. PointR I) Source # 
Instance details

Defined in ADP.Fusion.PointR.Term.MultiChr

Methods

termStream :: Proxy (ps :. IVariable d) -> TermSymbol ts (MultiChr c v x) -> LimitType (is :. PointR I) -> (is :. PointR I) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. PointR I) (TermArg (TermSymbol ts (MultiChr c v x)))) Source #

(TermStreamContext m ps ts s x0 i0 is (PointR I), KnownNat c) => TermStream m (ps :. IStatic d :: Type) (TermSymbol ts (MultiChr c v x)) s (is :. PointR I) Source # 
Instance details

Defined in ADP.Fusion.PointR.Term.MultiChr

Methods

termStream :: Proxy (ps :. IStatic d) -> TermSymbol ts (MultiChr c v x) -> LimitType (is :. PointR I) -> (is :. PointR I) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. PointR I) (TermArg (TermSymbol ts (MultiChr c v x)))) Source #

(TermStreamContext m ps ts s x0 i0 is (Unit I), Monad m, TermStream m ps ts (Elm x0 i0) is) => TermStream m (ps :. p :: a :. b) (TermSymbol ts Deletion) s (is :. Unit I) Source # 
Instance details

Defined in ADP.Fusion.Unit.Term.Deletion

Methods

termStream :: Proxy (ps :. p) -> TermSymbol ts Deletion -> LimitType (is :. Unit I) -> (is :. Unit I) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. Unit I) (TermArg (TermSymbol ts Deletion))) Source #

data TermState s i e Source #

Constructors

TState !s !(RunningIndex i) !e 

class TableStaticVar pos minSize tableIx ix where Source #

Methods

tableStreamIndex Source #

Arguments

:: Proxy pos

provide type-level information on if we are currently staticvariable etc

-> minSize

Information on the minimal size of the corresponding table.

-> LimitType tableIx

provide type-level information on the index structure of the table we are looking at. This index structure might well be different than the ix index we use in the grammar.

-> ix

current right-most index

-> ix

right-most index for symbol to the left of us

Instances
TableStaticVar (pos :: k) Z tableIx Z Source #

Index "0" for multi-dimensional syntactic variables.

Instance details

Defined in ADP.Fusion.Core.Multi

Methods

tableStreamIndex :: Proxy pos -> Z -> LimitType tableIx -> Z -> Z Source #

MinSize minSize => TableStaticVar (pos :: k) minSize u (PointL C) Source # 
Instance details

Defined in ADP.Fusion.PointL.Core

Methods

tableStreamIndex :: Proxy pos -> minSize -> LimitType u -> PointL C -> PointL C Source #

MinSize minSize => TableStaticVar (pos :: k) minSize u (PointL O) Source # 
Instance details

Defined in ADP.Fusion.PointL.Core

Methods

tableStreamIndex :: Proxy pos -> minSize -> LimitType u -> PointL O -> PointL O Source #

MinSize minSize => TableStaticVar (pos :: k) minSize u (PointL I) Source # 
Instance details

Defined in ADP.Fusion.PointL.Core

Methods

tableStreamIndex :: Proxy pos -> minSize -> LimitType u -> PointL I -> PointL I Source #

MinSize minSize => TableStaticVar (pos :: k) minSize u (PointR I) Source # 
Instance details

Defined in ADP.Fusion.PointR.Core

Methods

tableStreamIndex :: Proxy pos -> minSize -> LimitType u -> PointR I -> PointR I Source #

(TableStaticVar ps cs us is, TableStaticVar p c u i) => TableStaticVar (ps :. p :: Type) (cs :. c) (us :. u) (is :. i) Source # 
Instance details

Defined in ADP.Fusion.Core.Multi

Methods

tableStreamIndex :: Proxy (ps :. p) -> (cs :. c) -> LimitType (us :. u) -> (is :. i) -> is :. i Source #

class TermStaticVar pos sym ix 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.

Methods

termStreamIndex :: Proxy pos -> sym -> ix -> ix Source #

termStaticCheck :: Proxy pos -> sym -> LimitType ix -> ix -> Int# -> Int# Source #

Instances
TermStaticVar (pos :: k) M Z Source # 
Instance details

Defined in ADP.Fusion.Core.Multi

Methods

termStreamIndex :: Proxy pos -> M -> Z -> Z Source #

termStaticCheck :: Proxy pos -> M -> LimitType Z -> Z -> Int# -> Int# Source #

TermStaticVar (oAny :: k) Deletion (PointL O) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.Deletion

TermStaticVar (IVariable d :: Type) Deletion (PointL I) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.Deletion

TermStaticVar (IVariable d :: Type) Deletion (PointR I) Source # 
Instance details

Defined in ADP.Fusion.PointR.Term.Deletion

TermStaticVar (IStatic d :: Type) Deletion (PointL I) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.Deletion

TermStaticVar (IStatic d :: Type) Switch (PointL I) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.Switch

TermStaticVar (IStatic d :: Type) Deletion (PointR I) Source # 
Instance details

Defined in ADP.Fusion.PointR.Term.Deletion

TermStaticVar (IStatic d :: Type) Deletion (Unit I) Source # 
Instance details

Defined in ADP.Fusion.Unit.Term.Deletion

TermStaticVar (OStatic d :: Type) Switch (PointL O) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.Switch

TermStaticVar (IStatic 0) (Epsilon Local) (PointR I) Source # 
Instance details

Defined in ADP.Fusion.PointR.Term.Epsilon

TermStaticVar (IStatic 0) (Epsilon Local) (PointL I) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.Epsilon

TermStaticVar (IStatic 0) (Epsilon Global) (PointR I) Source # 
Instance details

Defined in ADP.Fusion.PointR.Term.Epsilon

TermStaticVar (IStatic 0) (Epsilon Global) (PointL I) Source #

We assume that ε / Epsilon is ever only the single symbol (maybe apart from - / Deletion) on a tape. Hence The instance is only active in IStatic 0 cases.

Instance details

Defined in ADP.Fusion.PointL.Term.Epsilon

TermStaticVar (OStatic 0) (Epsilon Local) (PointL O) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.Epsilon

TermStaticVar (OStatic 0) (Epsilon Global) (PointL O) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.Epsilon

(TermStaticVar ps ts is, TermStaticVar p t i) => TermStaticVar (ps :. p :: Type) (TermSymbol ts t) (is :. i) Source # 
Instance details

Defined in ADP.Fusion.Core.Multi

Methods

termStreamIndex :: Proxy (ps :. p) -> TermSymbol ts t -> (is :. i) -> is :. i Source #

termStaticCheck :: Proxy (ps :. p) -> TermSymbol ts t -> LimitType (is :. i) -> (is :. i) -> Int# -> Int# Source #

TermStaticVar (IVariable d :: Type) (Chr r x) (PointR I) Source # 
Instance details

Defined in ADP.Fusion.PointR.Term.Chr

TermStaticVar (IStatic d :: Type) (Chr r x) (PointL I) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.Chr

TermStaticVar (IStatic d :: Type) (Chr r x) (PointR I) Source # 
Instance details

Defined in ADP.Fusion.PointR.Term.Chr

TermStaticVar (OStatic d :: Type) (Chr r x) (PointL O) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.Chr

KnownNat c => TermStaticVar (IVariable d :: Type) (MultiChr c v x) (PointR I) Source # 
Instance details

Defined in ADP.Fusion.PointR.Term.MultiChr

KnownNat c => TermStaticVar (IStatic d :: Type) (MultiChr c v x) (PointL I) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.MultiChr

KnownNat c => TermStaticVar (IStatic d :: Type) (MultiChr c v x) (PointR I) Source # 
Instance details

Defined in ADP.Fusion.PointR.Term.MultiChr

TermStaticVar (OStatic d :: Type) (MultiChr c v x) (PointL O) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.MultiChr

KnownNat minSz => TermStaticVar (IStatic d :: Type) (Str (Nothing :: Maybe Symbol) minSz (Nothing :: Maybe Nat) v x) (PointL I) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.Str

type family TermArg x :: * Source #

Extracts the type of a multi-dimensional terminal argument.

Instances
type TermArg M Source # 
Instance details

Defined in ADP.Fusion.Core.Multi

type TermArg M = Z
type TermArg Switch Source # 
Instance details

Defined in ADP.Fusion.Core.Term.Switch

type TermArg Switch = ()
type TermArg Edge Source # 
Instance details

Defined in ADP.Fusion.Core.Term.Edge

type TermArg Deletion Source # 
Instance details

Defined in ADP.Fusion.Core.Term.Deletion

type TermArg Deletion = ()
type TermArg (Epsilon lg) Source # 
Instance details

Defined in ADP.Fusion.Core.Term.Epsilon

type TermArg (Epsilon lg) = ()
type TermArg (TermSymbol a b) Source # 
Instance details

Defined in ADP.Fusion.Core.Multi

type TermArg (Test v x) Source # 
Instance details

Defined in ADP.Fusion.Core.Term.Test

type TermArg (Test v x) = v x
type TermArg (PeekIndex i) Source # 
Instance details

Defined in ADP.Fusion.Core.Term.PeekIndex

type TermArg (Chr r x) Source # 
Instance details

Defined in ADP.Fusion.Core.Term.Chr

type TermArg (Chr r x) = r
type TermArg (MultiChr c v x) Source # 
Instance details

Defined in ADP.Fusion.Core.Term.MultiChr

type TermArg (MultiChr c v x) = v x
type TermArg (TwIRec m c i x) Source # 
Instance details

Defined in ADP.Fusion.Core.SynVar.Recursive.Type

type TermArg (TwIRec m c i x) = x
type TermArg (Str linked minSz maxSz v x) Source # 
Instance details

Defined in ADP.Fusion.Core.Term.Str

type TermArg (Str linked minSz maxSz v x) = v x
type TermArg (TwITbl b s m arr c i x) Source # 
Instance details

Defined in ADP.Fusion.Core.SynVar.Array.Type

type TermArg (TwITbl b s m arr c i x) = x
type TermArg (TwITblBt b s arr c i x mF mB r) Source # 
Instance details

Defined in ADP.Fusion.Core.SynVar.Array.Type

type TermArg (TwITblBt b s arr c i x mF mB r) = (x, [r])

data TermSymbol a b Source #

Terminal symbols are stacked together with a tails and b head.

Constructors

a :| b infixl 2 
Instances
(SplitIxCol uId (SameSid uId (Elm ls i)) (Elm ls i), Zconcat (SplitIxTy uId (SameSid uId (Elm ls i)) (Elm ls i)) (SplitIxTy uId (SameSid uId (TermSymbol a b)) (TermSymbol a b))) => SplitIxCol uId True (Elm (ls :!: TermSymbol a b) i) Source # 
Instance details

Defined in ADP.Fusion.Core.SynVar.Split.Type

Associated Types

type SplitIxTy uId True (Elm (ls :!: TermSymbol a b) i) :: Type Source #

Methods

splitIxCol :: Proxy uId -> Proxy True -> Elm (ls :!: TermSymbol a b) i -> SplitIxTy uId True (Elm (ls :!: TermSymbol a b) i) Source #

(Monad m, MkStream m posLeft ls i, Element ls i, TermStaticVar pos (TermSymbol a b) i, TermStream m pos (TermSymbol a b) (Elm ls i) i, posLeft ~ LeftPosTy pos (TermSymbol a b) i) => MkStream m (pos :: Type) (ls :!: TermSymbol a b) i Source # 
Instance details

Defined in ADP.Fusion.Core.Multi

Methods

mkStream :: Proxy pos -> (ls :!: TermSymbol a b) -> Int# -> LimitType i -> i -> Stream m (Elm (ls :!: TermSymbol a b) i) Source #

TermStreamContext m ps ts s x0 i0 is (PointL O) => TermStream m (ps :. OStatic d :: Type) (TermSymbol ts (Chr r x)) s (is :. PointL O) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.Chr

Methods

termStream :: Proxy (ps :. OStatic d) -> TermSymbol ts (Chr r x) -> LimitType (is :. PointL O) -> (is :. PointL O) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. PointL O) (TermArg (TermSymbol ts (Chr r x)))) Source #

TermStreamContext m ps ts s x0 i0 is (PointL I) => TermStream m (ps :. IStatic d :: Type) (TermSymbol ts (Chr r x)) s (is :. PointL I) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.Chr

Methods

termStream :: Proxy (ps :. IStatic d) -> TermSymbol ts (Chr r x) -> LimitType (is :. PointL I) -> (is :. PointL I) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. PointL I) (TermArg (TermSymbol ts (Chr r x)))) Source #

TermStreamContext m ps ts s x0 i0 is (PointL O) => TermStream m (ps :. OStatic d :: Type) (TermSymbol ts Deletion) s (is :. PointL O) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.Deletion

Methods

termStream :: Proxy (ps :. OStatic d) -> TermSymbol ts Deletion -> LimitType (is :. PointL O) -> (is :. PointL O) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. PointL O) (TermArg (TermSymbol ts Deletion))) Source #

TermStreamContext m ps ts s x0 i0 is (PointL I) => TermStream m (ps :. IVariable d :: Type) (TermSymbol ts Deletion) s (is :. PointL I) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.Deletion

TermStreamContext m ps ts s x0 i0 is (PointL I) => TermStream m (ps :. IStatic d :: Type) (TermSymbol ts Deletion) s (is :. PointL I) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.Deletion

Methods

termStream :: Proxy (ps :. IStatic d) -> TermSymbol ts Deletion -> LimitType (is :. PointL I) -> (is :. PointL I) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. PointL I) (TermArg (TermSymbol ts Deletion))) Source #

TermStreamContext m ps ts s x0 i0 is (PointL O) => TermStream m (ps :. OStatic d :: Type) (TermSymbol ts (Epsilon lg)) s (is :. PointL O) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.Epsilon

Methods

termStream :: Proxy (ps :. OStatic d) -> TermSymbol ts (Epsilon lg) -> LimitType (is :. PointL O) -> (is :. PointL O) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. PointL O) (TermArg (TermSymbol ts (Epsilon lg)))) Source #

TermStreamContext m ps ts s x0 i0 is (PointL I) => TermStream m (ps :. IStatic d :: Type) (TermSymbol ts (Epsilon lg)) s (is :. PointL I) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.Epsilon

Methods

termStream :: Proxy (ps :. IStatic d) -> TermSymbol ts (Epsilon lg) -> LimitType (is :. PointL I) -> (is :. PointL I) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. PointL I) (TermArg (TermSymbol ts (Epsilon lg)))) Source #

(TermStreamContext m ps ts s x0 i0 is (PointL O), KnownNat c) => TermStream m (ps :. OStatic d :: Type) (TermSymbol ts (MultiChr c v x)) s (is :. PointL O) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.MultiChr

Methods

termStream :: Proxy (ps :. OStatic d) -> TermSymbol ts (MultiChr c v x) -> LimitType (is :. PointL O) -> (is :. PointL O) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. PointL O) (TermArg (TermSymbol ts (MultiChr c v x)))) Source #

(TermStreamContext m ps ts s x0 i0 is (PointL I), KnownNat c) => TermStream m (ps :. IStatic d :: Type) (TermSymbol ts (MultiChr c v x)) s (is :. PointL I) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.MultiChr

Methods

termStream :: Proxy (ps :. IStatic d) -> TermSymbol ts (MultiChr c v x) -> LimitType (is :. PointL I) -> (is :. PointL I) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. PointL I) (TermArg (TermSymbol ts (MultiChr c v x)))) Source #

TermStreamContext m ps ts s x0 i0 is (PointL I) => TermStream m (ps :. IStatic d :: Type) (TermSymbol ts (Str (Nothing :: Maybe Symbol) minSz (Nothing :: Maybe Nat) v x)) s (is :. PointL I) Source #

Note that the minSz should automatically work out due to the encoding in d.

Instance details

Defined in ADP.Fusion.PointL.Term.Str

Methods

termStream :: Proxy (ps :. IStatic d) -> TermSymbol ts (Str Nothing minSz Nothing v x) -> LimitType (is :. PointL I) -> (is :. PointL I) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. PointL I) (TermArg (TermSymbol ts (Str Nothing minSz Nothing v x)))) Source #

TermStreamContext m ps ts s x0 i0 is (PointL O) => TermStream m (ps :. OStatic d :: Type) (TermSymbol ts Switch) s (is :. PointL O) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.Switch

Methods

termStream :: Proxy (ps :. OStatic d) -> TermSymbol ts Switch -> LimitType (is :. PointL O) -> (is :. PointL O) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. PointL O) (TermArg (TermSymbol ts Switch))) Source #

TermStreamContext m ps ts s x0 i0 is (PointL I) => TermStream m (ps :. IStatic d :: Type) (TermSymbol ts Switch) s (is :. PointL I) Source # 
Instance details

Defined in ADP.Fusion.PointL.Term.Switch

Methods

termStream :: Proxy (ps :. IStatic d) -> TermSymbol ts Switch -> LimitType (is :. PointL I) -> (is :. PointL I) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. PointL I) (TermArg (TermSymbol ts Switch))) Source #

TermStreamContext m ps ts s x0 i0 is (PointR I) => TermStream m (ps :. IVariable d :: Type) (TermSymbol ts (Chr r x)) s (is :. PointR I) Source # 
Instance details

Defined in ADP.Fusion.PointR.Term.Chr

Methods

termStream :: Proxy (ps :. IVariable d) -> TermSymbol ts (Chr r x) -> LimitType (is :. PointR I) -> (is :. PointR I) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. PointR I) (TermArg (TermSymbol ts (Chr r x)))) Source #

TermStreamContext m ps ts s x0 i0 is (PointR I) => TermStream m (ps :. IStatic d :: Type) (TermSymbol ts (Chr r x)) s (is :. PointR I) Source # 
Instance details

Defined in ADP.Fusion.PointR.Term.Chr

Methods

termStream :: Proxy (ps :. IStatic d) -> TermSymbol ts (Chr r x) -> LimitType (is :. PointR I) -> (is :. PointR I) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. PointR I) (TermArg (TermSymbol ts (Chr r x)))) Source #

TermStreamContext m ps ts s x0 i0 is (PointR I) => TermStream m (ps :. IVariable d :: Type) (TermSymbol ts Deletion) s (is :. PointR I) Source # 
Instance details

Defined in ADP.Fusion.PointR.Term.Deletion

TermStreamContext m ps ts s x0 i0 is (PointR I) => TermStream m (ps :. IStatic d :: Type) (TermSymbol ts Deletion) s (is :. PointR I) Source # 
Instance details

Defined in ADP.Fusion.PointR.Term.Deletion

Methods

termStream :: Proxy (ps :. IStatic d) -> TermSymbol ts Deletion -> LimitType (is :. PointR I) -> (is :. PointR I) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. PointR I) (TermArg (TermSymbol ts Deletion))) Source #

TermStreamContext m ps ts s x0 i0 is (PointR I) => TermStream m (ps :. IStatic d :: Type) (TermSymbol ts (Epsilon lg)) s (is :. PointR I) Source # 
Instance details

Defined in ADP.Fusion.PointR.Term.Epsilon

Methods

termStream :: Proxy (ps :. IStatic d) -> TermSymbol ts (Epsilon lg) -> LimitType (is :. PointR I) -> (is :. PointR I) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. PointR I) (TermArg (TermSymbol ts (Epsilon lg)))) Source #

(TermStreamContext m ps ts s x0 i0 is (PointR I), KnownNat c) => TermStream m (ps :. IVariable d :: Type) (TermSymbol ts (MultiChr c v x)) s (is :. PointR I) Source # 
Instance details

Defined in ADP.Fusion.PointR.Term.MultiChr

Methods

termStream :: Proxy (ps :. IVariable d) -> TermSymbol ts (MultiChr c v x) -> LimitType (is :. PointR I) -> (is :. PointR I) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. PointR I) (TermArg (TermSymbol ts (MultiChr c v x)))) Source #

(TermStreamContext m ps ts s x0 i0 is (PointR I), KnownNat c) => TermStream m (ps :. IStatic d :: Type) (TermSymbol ts (MultiChr c v x)) s (is :. PointR I) Source # 
Instance details

Defined in ADP.Fusion.PointR.Term.MultiChr

Methods

termStream :: Proxy (ps :. IStatic d) -> TermSymbol ts (MultiChr c v x) -> LimitType (is :. PointR I) -> (is :. PointR I) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. PointR I) (TermArg (TermSymbol ts (MultiChr c v x)))) Source #

(TermStaticVar ps ts is, TermStaticVar p t i) => TermStaticVar (ps :. p :: Type) (TermSymbol ts t) (is :. i) Source # 
Instance details

Defined in ADP.Fusion.Core.Multi

Methods

termStreamIndex :: Proxy (ps :. p) -> TermSymbol ts t -> (is :. i) -> is :. i Source #

termStaticCheck :: Proxy (ps :. p) -> TermSymbol ts t -> LimitType (is :. i) -> (is :. i) -> Int# -> Int# Source #

(Eq a, Eq b) => Eq (TermSymbol a b) Source # 
Instance details

Defined in ADP.Fusion.Core.Multi

Methods

(==) :: TermSymbol a b -> TermSymbol a b -> Bool #

(/=) :: TermSymbol a b -> TermSymbol a b -> Bool #

(Show i, Show (RunningIndex i), Show (TermArg (TermSymbol a b)), Show (Elm ls i)) => Show (Elm (ls :!: TermSymbol a b) i) Source # 
Instance details

Defined in ADP.Fusion.Core.Multi

Methods

showsPrec :: Int -> Elm (ls :!: TermSymbol a b) i -> ShowS #

show :: Elm (ls :!: TermSymbol a b) i -> String #

showList :: [Elm (ls :!: TermSymbol a b) i] -> ShowS #

(Show a, Show b) => Show (TermSymbol a b) Source # 
Instance details

Defined in ADP.Fusion.Core.Multi

Methods

showsPrec :: Int -> TermSymbol a b -> ShowS #

show :: TermSymbol a b -> String #

showList :: [TermSymbol a b] -> ShowS #

Build (TermSymbol a b) Source # 
Instance details

Defined in ADP.Fusion.Core.Multi

Associated Types

type Stack (TermSymbol a b) :: Type Source #

Methods

build :: TermSymbol a b -> Stack (TermSymbol a b) Source #

Element ls i => Element (ls :!: TermSymbol a b) i Source # 
Instance details

Defined in ADP.Fusion.Core.Multi

Associated Types

data Elm (ls :!: TermSymbol a b) i :: Type Source #

type RecElm (ls :!: TermSymbol a b) i :: Type Source #

type Arg (ls :!: TermSymbol a b) :: Type Source #

Methods

getArg :: Elm (ls :!: TermSymbol a b) i -> Arg (ls :!: TermSymbol a b) Source #

getIdx :: Elm (ls :!: TermSymbol a b) i -> RunningIndex i Source #

getElm :: Elm (ls :!: TermSymbol a b) i -> RecElm (ls :!: TermSymbol a b) i Source #

(TermStreamContext m ps ts s x0 i0 is (Unit I), Monad m, TermStream m ps ts (Elm x0 i0) is) => TermStream m (ps :. p :: a :. b) (TermSymbol ts Deletion) s (is :. Unit I) Source # 
Instance details

Defined in ADP.Fusion.Unit.Term.Deletion

Methods

termStream :: Proxy (ps :. p) -> TermSymbol ts Deletion -> LimitType (is :. Unit I) -> (is :. Unit I) -> Stream m (TermState s Z Z) -> Stream m (TermState s (is :. Unit I) (TermArg (TermSymbol ts Deletion))) Source #

type SplitIxTy uId True (Elm (ls :!: TermSymbol a b) i) Source # 
Instance details

Defined in ADP.Fusion.Core.SynVar.Split.Type

type SplitIxTy uId True (Elm (ls :!: TermSymbol a b) i) = Zpp (SplitIxTy uId (SameSid uId (Elm ls i)) (Elm ls i)) (SplitIxTy uId (SameSid uId (TermSymbol a b)) (TermSymbol a b))
type Stack (TermSymbol a b) Source # 
Instance details

Defined in ADP.Fusion.Core.Multi

type Stack (TermSymbol a b) = S :!: TermSymbol a b
data Elm (ls :!: TermSymbol a b) i Source # 
Instance details

Defined in ADP.Fusion.Core.Multi

data Elm (ls :!: TermSymbol a b) i = ElmTS !(TermArg (TermSymbol a b)) !(RunningIndex i) !(Elm ls i)
type Arg (ls :!: TermSymbol a b) Source # 
Instance details

Defined in ADP.Fusion.Core.Multi

type Arg (ls :!: TermSymbol a b) = Arg ls :. TermArg (TermSymbol a b)
type TermArg (TermSymbol a b) Source # 
Instance details

Defined in ADP.Fusion.Core.Multi

type LeftPosTy (ps :. p) (TermSymbol a b) (is :. i) Source # 
Instance details

Defined in ADP.Fusion.Core.Multi

type LeftPosTy (ps :. p) (TermSymbol a b) (is :. i) = LeftPosTy ps a is :. LeftPosTy p b i

data M Source #

Terminates a multi-dimensional terminal symbol stack.

Constructors

M 
Instances
Eq M Source # 
Instance details

Defined in ADP.Fusion.Core.Multi

Methods

(==) :: M -> M -> Bool #

(/=) :: M -> M -> Bool #

Show M Source # 
Instance details

Defined in ADP.Fusion.Core.Multi

Methods

showsPrec :: Int -> M -> ShowS #

show :: M -> String #

showList :: [M] -> ShowS #

TermStaticVar (pos :: k) M Z Source # 
Instance details

Defined in ADP.Fusion.Core.Multi

Methods

termStreamIndex :: Proxy pos -> M -> Z -> Z Source #

termStaticCheck :: Proxy pos -> M -> LimitType Z -> Z -> Int# -> Int# Source #

Monad m => TermStream m (pos :: k) M s Z Source # 
Instance details

Defined in ADP.Fusion.Core.Multi

Methods

termStream :: Proxy pos -> M -> LimitType Z -> Z -> Stream m (TermState s Z Z) -> Stream m (TermState s Z (TermArg M)) Source #

type TermArg M Source # 
Instance details

Defined in ADP.Fusion.Core.Multi

type TermArg M = Z
type LeftPosTy Z M Z Source # 
Instance details

Defined in ADP.Fusion.Core.Multi

type LeftPosTy Z M Z = Z

addTermStream1 :: forall m pos t s i. (Monad m, TermStream m (Z :. pos) (TermSymbol M t) (Elm (Term1 s) (Z :. i)) (Z :. i)) => Proxy pos -> t -> LimitType 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 !!!

elmTerm1 :: s -> i -> Elm (Term1 s) (Z :. i) Source #

data Stream (m :: Type -> Type) a where #

Monadic streams

Constructors

Stream :: forall (m :: Type -> Type) a s. (s -> m (Step s a)) -> s -> Stream m a 
Instances
Monad m => Functor (Stream m) 
Instance details

Defined in Data.Vector.Fusion.Stream.Monadic

Methods

fmap :: (a -> b) -> Stream m a -> Stream m b #

(<$) :: a -> Stream m b -> Stream m a #

newtype Id a #

Identity monad

Constructors

Id 

Fields

Instances
Monad Id 
Instance details

Defined in Data.Vector.Fusion.Util

Methods

(>>=) :: Id a -> (a -> Id b) -> Id b #

(>>) :: Id a -> Id b -> Id b #

return :: a -> Id a #

fail :: String -> Id a #

Functor Id 
Instance details

Defined in Data.Vector.Fusion.Util

Methods

fmap :: (a -> b) -> Id a -> Id b #

(<$) :: a -> Id b -> Id a #

Applicative Id 
Instance details

Defined in Data.Vector.Fusion.Util

Methods

pure :: a -> Id a #

(<*>) :: Id (a -> b) -> Id a -> Id b #

liftA2 :: (a -> b -> c) -> Id a -> Id b -> Id c #

(*>) :: Id a -> Id b -> Id b #

(<*) :: Id a -> Id b -> Id a #

(PrimArrayOps arr i x, MPrimArrayOps arr i x, isThisBigOrder ~ IsThisBigOrder bigOrder ts, isThisSmallOrder ~ IsThisSmallOrder smallOrder ts, isThisOrder ~ (isThisBigOrder && isThisSmallOrder), ThisSmallOrder bigOrder smallOrder isThisOrder ts i) => ThisSmallOrder bigOrder smallOrder True (ts :. TwITbl bo so Id arr c i x) i Source #

TODO generalize from Id to any monad in a stack with a primitive base

Instance details

Defined in ADP.Fusion.Core.SynVar.FillTyLvl

Methods

thisSmallOrder :: Proxy bigOrder -> Proxy smallOrder -> Proxy True -> (ts :. TwITbl bo so Id arr c i x) -> i -> ST s () Source #

(CountNumberOfCells n ts, Index i, PrimArrayOps arr i x, KnownNat n, KnownNat bo) => CountNumberOfCells n (ts :. TwITbl bo so Id arr c i x) Source # 
Instance details

Defined in ADP.Fusion.Core.SynVar.FillTyLvl

Methods

countNumberOfCells :: Maybe (Proxy n) -> (ts :. TwITbl bo so Id arr c i x) -> Integer Source #