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

Safe HaskellNone
LanguageHaskell2010

ADP.Fusion.Core.Multi

Contents

Synopsis

Multi-dimensional extension

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

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

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])

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

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 #

data TermState s i e Source #

Constructors

TState 

Fields

  • tS :: !s

    state coming in from the left

  • iIx :: !(RunningIndex i)

    I/C building up state to hand over to next symbol

  • eTS :: !e

    element data

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 #

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 !!!

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

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

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

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

Shorthand for proxifying getIndex

Orphan instances

Monad m => MkStream m Z S Z Source # 
Instance details

Methods

mkStream :: Proxy Z -> S -> Int# -> LimitType Z -> Z -> Stream m (Elm S Z) Source #