Safe Haskell | None |
---|---|
Language | Haskell2010 |
Wrap the underlying table and the rules. Isomorphic to (,)
.
Documentation
Wrap tables of type t
. The tables are strict, the functions f
can
not be strict, because we need to build grammars recursively.
TW !t f |
Instances
(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 |
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 # | |
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 # | |
(smallOrder ~ SmallOrderNats (ts :. TwITbl bo so m arr c i x), EachSmallOrder boNat smallOrder (ts :. TwITbl bo so m arr c i x) i, PrimArrayOps arr i x, IndexStream i) => ThisBigOrder boNat True (ts :. TwITbl bo so m arr c i x) Source # | We have found the first table for our big order. Extract the bounds and hand over to small order. We do not need to check for another big order with this nat, since all tables are now being filled by the small order. |
(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 # | |
Defined in ADP.Fusion.Core.SynVar.FillTyLvl | |
(Monad mB, ITblCx mB pos ls arr x u c (i O), MkStream mB (LeftPosTy pos (TwITblBt b s arr c u x mF mB r) (i O)) ls (i O)) => MkStream mB (pos :: Type) (ls :!: TwITblBt b s arr c u x mF mB r) (i O) Source # | |
(Monad m, ITblCx m pos ls arr x u c (i O), MkStream m (LeftPosTy pos (TwITbl b s m arr c u x) (i O)) ls (i O)) => MkStream m (pos :: Type) (ls :!: TwITbl b s m arr c u x) (i O) Source # | |
(Monad mB, ITblCx mB pos ls arr x u c (i I), MkStream mB (LeftPosTy pos (TwITblBt b s arr c u x mF mB r) (i I)) ls (i I)) => MkStream mB (pos :: Type) (ls :!: TwITblBt b s arr c u x mF mB r) (i I) Source # | |
(Monad m, ITblCx m pos ls arr x u c (i I), MkStream m (LeftPosTy pos (TwITbl b s m arr c u x) (i I)) ls (i I)) => MkStream m (pos :: Type) (ls :!: TwITbl b s m arr c u x) (i I) Source # | |
(Monad mB, pos ~ (ps :. p), posLeft ~ LeftPosTy pos (TwITblBt b s arr (cs :. c) (us :. u) x mF mB r) (is :. i), Element ls (is :. i), TableStaticVar (ps :. p) (cs :. c) (us :. u) (is :. i), AddIndexDense pos (Elm ls (is :. i)) (cs :. c) (us :. u) (is :. i), MkStream mB posLeft ls (is :. i), PrimArrayOps arr (us :. u) x) => MkStream mB (ps :. p :: Type) (ls :!: TwITblBt b s arr (cs :. c) (us :. u) x mF mB r) (is :. i) Source # | |
(Monad m, pos ~ (ps :. p), posLeft ~ LeftPosTy pos (TwITbl b s m arr (cs :. c) (us :. u) x) (is :. i), Element ls (is :. i), TableStaticVar (ps :. p) (cs :. c) (us :. u) (is :. i), AddIndexDense pos (Elm ls (is :. i)) (cs :. c) (us :. u) (is :. i), MkStream m posLeft ls (is :. i), PrimArrayOps arr (us :. u) x) => MkStream m (ps :. p :: Type) (ls :!: TwITbl b s m arr (cs :. c) (us :. u) x) (is :. i) Source # | |
(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 # | |
(Show i, Show (RunningIndex i), Show (Elm ls i), Show x) => Show (Elm (ls :!: TwITbl b s m arr c j x) i) Source # | |
Show t => Show (TW t f) Source # | |
(Monad mB, IndexStream i, i ~ j, m ~ mB) => Axiom (TW (Backtrack (TwIRec mF c i x) mF mB) (LimitType j -> j -> m [r])) Source # | |
Defined in ADP.Fusion.Core.SynVar.Recursive.Type type AxiomStream (TW (Backtrack (TwIRec mF c i x) mF mB) (LimitType j -> j -> m [r])) :: Type Source # type AxiomIx (TW (Backtrack (TwIRec mF c i x) mF mB) (LimitType j -> j -> m [r])) :: Type Source # axiom :: TW (Backtrack (TwIRec mF c i x) mF mB) (LimitType j -> j -> m [r]) -> AxiomStream (TW (Backtrack (TwIRec mF c i x) mF mB) (LimitType j -> j -> m [r])) Source # axiomAt :: TW (Backtrack (TwIRec mF c i x) mF mB) (LimitType j -> j -> m [r]) -> AxiomIx (TW (Backtrack (TwIRec mF c i x) mF mB) (LimitType j -> j -> m [r])) -> AxiomStream (TW (Backtrack (TwIRec mF c i x) mF mB) (LimitType j -> j -> m [r])) Source # | |
(Monad mB, PrimArrayOps arr i x, IndexStream i, j ~ i, m ~ mB) => Axiom (TW (Backtrack (TwITbl b s mF arr c i x) mF mB) (LimitType j -> j -> m [r])) Source # | We need this somewhat annoying instance construction ( |
Defined in ADP.Fusion.Core.SynVar.Array.Type type AxiomStream (TW (Backtrack (TwITbl b s mF arr c i x) mF mB) (LimitType j -> j -> m [r])) :: Type Source # type AxiomIx (TW (Backtrack (TwITbl b s mF arr c i x) mF mB) (LimitType j -> j -> m [r])) :: Type Source # axiom :: TW (Backtrack (TwITbl b s mF arr c i x) mF mB) (LimitType j -> j -> m [r]) -> AxiomStream (TW (Backtrack (TwITbl b s mF arr c i x) mF mB) (LimitType j -> j -> m [r])) Source # axiomAt :: TW (Backtrack (TwITbl b s mF arr c i x) mF mB) (LimitType j -> j -> m [r]) -> AxiomIx (TW (Backtrack (TwITbl b s mF arr c i x) mF mB) (LimitType j -> j -> m [r])) -> AxiomStream (TW (Backtrack (TwITbl b s mF arr c i x) mF mB) (LimitType j -> j -> m [r])) Source # | |
Element ls i => Element (ls :!: TwIRecBt c u x mF mB r) i Source # | |
Element ls i => Element (ls :!: TwIRec m c u x) i Source # | |
Element ls i => Element (ls :!: TwITblBt b s arr c j x mF mB r) i Source # | |
Defined in ADP.Fusion.Core.SynVar.Array.Type data Elm (ls :!: TwITblBt b s arr c j x mF mB r) i :: Type Source # type RecElm (ls :!: TwITblBt b s arr c j x mF mB r) i :: Type Source # type Arg (ls :!: TwITblBt b s arr c j x mF mB r) :: Type Source # getArg :: Elm (ls :!: TwITblBt b s arr c j x mF mB r) i -> Arg (ls :!: TwITblBt b s arr c j x mF mB r) Source # getIdx :: Elm (ls :!: TwITblBt b s arr c j x mF mB r) i -> RunningIndex i Source # getElm :: Elm (ls :!: TwITblBt b s arr c j x mF mB r) i -> RecElm (ls :!: TwITblBt b s arr c j x mF mB r) i Source # | |
Element ls i => Element (ls :!: TwITbl b s m arr c j x) i Source # | |
Element ls i => Element (ls :!: Split uId splitType (TwITblBt b s arr c j x mF mB r)) i Source # | |
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 :: Type Source # type RecElm (ls :!: Split uId splitType (TwITblBt b s arr c j x mF mB r)) i :: Type Source # type Arg (ls :!: Split uId splitType (TwITblBt b s arr c j x mF mB r)) :: Type Source # getArg :: Elm (ls :!: Split uId splitType (TwITblBt b s arr c j x mF mB r)) i -> Arg (ls :!: Split uId splitType (TwITblBt b s arr c j x mF mB r)) Source # getIdx :: Elm (ls :!: Split uId splitType (TwITblBt b s arr c j x mF mB r)) i -> RunningIndex i Source # getElm :: Elm (ls :!: Split uId splitType (TwITblBt b s arr c j x mF mB r)) i -> RecElm (ls :!: Split uId splitType (TwITblBt b s arr c j x mF mB r)) i Source # | |
Element ls i => Element (ls :!: Split uId splitType (TwITbl b s m arr c j x)) i Source # | |
Defined in ADP.Fusion.Core.SynVar.Split.Type data Elm (ls :!: Split uId splitType (TwITbl b s m arr c j x)) i :: Type Source # type RecElm (ls :!: Split uId splitType (TwITbl b s m arr c j x)) i :: Type Source # type Arg (ls :!: Split uId splitType (TwITbl b s m arr c j x)) :: Type Source # getArg :: Elm (ls :!: Split uId splitType (TwITbl b s m arr c j x)) i -> Arg (ls :!: Split uId splitType (TwITbl b s m arr c j x)) Source # getIdx :: Elm (ls :!: Split uId splitType (TwITbl b s m arr c j x)) i -> RunningIndex i Source # getElm :: Elm (ls :!: Split uId splitType (TwITbl b s m arr c j x)) i -> RecElm (ls :!: Split uId splitType (TwITbl b s m arr c j x)) i Source # | |
(Applicative mB, Monad mB, pos ~ (ps :. p), posLeft ~ LeftPosTy pos (TwIRecBt (cs :. c) (us :. u) x mF mB r) (is :. i), Element ls (is :. i), TableStaticVar (ps :. p) (cs :. c) (us :. u) (is :. i), AddIndexDense pos (Elm ls (is :. i)) (cs :. c) (us :. u) (is :. i), MkStream mB posLeft ls (is :. i)) => MkStream mB (ps :. p :: Type :. Type) (ls :!: TwIRecBt (cs :. c) (us :. u) x mF mB r) (is :. i) Source # | |
(Functor m, Monad m, pos ~ (ps :. p), posLeft ~ LeftPosTy pos (TwIRec m (cs :. c) (us :. u) x) (is :. i), Element ls (is :. i), TableStaticVar (ps :. p) (cs :. c) (us :. u) (is :. i), AddIndexDense pos (Elm ls (is :. i)) (cs :. c) (us :. u) (is :. i), MkStream m posLeft ls (is :. i)) => MkStream m (ps :. p :: Type :. Type) (ls :!: TwIRec m (cs :. c) (us :. u) x) (is :. i) Source # | |
Build (TwIRec m c i x) Source # | |
(Monad m, IndexStream i) => Axiom (TwIRec m c i x) Source # | |
Defined in ADP.Fusion.Core.SynVar.Recursive.Type | |
GenBacktrackTable (TwIRec mF c i x) mF mB Source # | |
Build (TwIRecBt c i x mF mB r) Source # | |
Build (TwITbl b s m arr c i x) Source # | |
(Monad m, PrimArrayOps arr i x, IndexStream i) => Axiom (TwITbl b s m arr c i x) Source # | |
Defined in ADP.Fusion.Core.SynVar.Array.Type type AxiomStream (TwITbl b s m arr c i x) :: Type Source # | |
GenBacktrackTable (TwITbl b s mF arr c i x) mF mB Source # | |
Build (TwITblBt b s arr c i x mF mB r) Source # | |
type SplitIxTy uId True (Elm (ls :!: Split sId splitType (TwITblBt b s arr c j x mF mB r)) i) Source # | |
type SplitIxTy uId True (Elm (ls :!: Split sId splitType (TwITbl b s m arr c j x)) i) Source # | |
type IsThisSmallOrder n (ts :. TwITbl bo so m arr c i x) Source # | |
Defined in ADP.Fusion.Core.SynVar.FillTyLvl | |
type IsThisBigOrder n (ts :. TwITbl bo so m arr c i x) Source # | |
Defined in ADP.Fusion.Core.SynVar.FillTyLvl | |
type LeftPosTy Z (TwITbl b s m arr Z Z x) Z Source # | |
type LeftPosTy Z (TwITbl b s m arr EmptyOk Z x) Z Source # | |
type LeftPosTy Complement (TwITbl b s m arr EmptyOk (PointL O) x) (PointL C) Source # | |
Defined in ADP.Fusion.PointL.SynVar.Indices | |
type LeftPosTy Complement (TwITbl b s m arr EmptyOk (PointL I) x) (PointL C) Source # | |
Defined in ADP.Fusion.PointL.SynVar.Indices | |
type LeftPosTy Complement (TwITbl b s m arr EmptyOk (Unit O) x) (Unit C) Source # | |
Defined in ADP.Fusion.Unit.SynVar.Indices | |
type LeftPosTy Complement (TwITbl b s m arr EmptyOk (Unit I) x) (Unit C) Source # | |
Defined in ADP.Fusion.Unit.SynVar.Indices | |
type LeftPosTy Z (TwITblBt b s arr Z Z x mF mB r) Z Source # | |
type LeftPosTy Z (TwITblBt b s arr EmptyOk Z x mF mB r) Z Source # | |
type LeftPosTy Complement (TwITblBt b s arr EmptyOk (PointL O) x mB mF r) (PointL C) Source # | |
Defined in ADP.Fusion.PointL.SynVar.Indices | |
type LeftPosTy Complement (TwITblBt b s arr EmptyOk (PointL I) x mB mF r) (PointL C) Source # | |
Defined in ADP.Fusion.PointL.SynVar.Indices | |
type LeftPosTy Complement (TwITblBt b s arr EmptyOk (Unit O) x mB mF r) (Unit C) Source # | |
Defined in ADP.Fusion.Unit.SynVar.Indices | |
type LeftPosTy Complement (TwITblBt b s arr EmptyOk (Unit I) x mB mF r) (Unit C) Source # | |
Defined in ADP.Fusion.Unit.SynVar.Indices | |
data Elm (ls :!: TwIRec m c u x) i Source # | |
Defined in ADP.Fusion.Core.SynVar.Recursive.Type | |
data Elm (ls :!: TwIRecBt c u x mF mB r) i Source # | |
Defined in ADP.Fusion.Core.SynVar.Recursive.Type | |
data Elm (ls :!: TwITbl b s m arr c j x) i Source # | |
Defined in ADP.Fusion.Core.SynVar.Array.Type | |
data Elm (ls :!: TwITblBt b s arr c j x mF mB r) i Source # | |
Defined in ADP.Fusion.Core.SynVar.Array.Type | |
data Elm (ls :!: Split uId splitType (TwITblBt b s arr c j x mF mB r)) i Source # | |
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 # | |
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 | |
type Arg (ls :!: TwIRec m c u x) Source # | |
type Arg (ls :!: TwIRecBt c u x mF mB r) Source # | |
type Arg (ls :!: TwITbl b s m arr c j x) Source # | |
type Arg (ls :!: TwITblBt b s arr c j x mF mB r) Source # | |
type Arg (ls :!: Split uId splitType (TwITblBt b s arr c j x mF mB r)) Source # | |
Defined in ADP.Fusion.Core.SynVar.Split.Type | |
type Arg (ls :!: Split uId splitType (TwITbl b s m arr c j x)) Source # | |
Defined in ADP.Fusion.Core.SynVar.Split.Type | |
type AxiomStream (TW (Backtrack (TwIRec mF c i x) mF mB) (LimitType j -> j -> m [r])) Source # | |
Defined in ADP.Fusion.Core.SynVar.Recursive.Type | |
type AxiomStream (TW (Backtrack (TwITbl b s mF arr c i x) mF mB) (LimitType j -> j -> m [r])) Source # | |
Defined in ADP.Fusion.Core.SynVar.Array.Type type AxiomStream (TW (Backtrack (TwITbl b s mF arr c i x) mF mB) (LimitType j -> j -> m [r])) = mB [r] | |
type AxiomIx (TW (Backtrack (TwITbl b s mF arr c i x) mF mB) (LimitType j -> j -> m [r])) Source # | |
type SmallOrderNats' (ts :. TwITbl bo so m arr c i x) Source # | |
Defined in ADP.Fusion.Core.SynVar.FillTyLvl | |
type BigOrderNats' (ts :. TwITbl bo so m arr c i x) Source # | |
Defined in ADP.Fusion.Core.SynVar.FillTyLvl | |
type RecElm (ls :!: TwITbl b s m arr c j x) i Source # | |
Defined in ADP.Fusion.Core.SynVar.Array.Type | |
type RecElm (ls :!: TwITblBt b s arr c j x mF mB r) i Source # | |
Defined in ADP.Fusion.Core.SynVar.Array.Type | |
type RecElm (ls :!: Split uId splitType (TwITblBt b s arr c j x mF mB r)) i Source # | |
type RecElm (ls :!: Split uId splitType (TwITbl b s m arr c j x)) i Source # | |
type LeftPosTy (ps :. p) (TwITbl b s m arr (eos :. EmptyOk) (us :. u) x) (is :. i) Source # | |
type LeftPosTy (IVariable d) (TwITbl b s m arr EmptyOk (PointL I) x) (PointL I) Source # | |
type LeftPosTy (IVariable d) (TwITbl b s m arr EmptyOk (PointR I) x) (PointR I) Source # | |
type LeftPosTy (IStatic d) (TwITbl b s m arr EmptyOk (PointL I) x) (PointL I) Source # | |
type LeftPosTy (IStatic d) (TwITbl b s m arr EmptyOk (PointR I) x) (PointR I) Source # | |
type LeftPosTy (IStatic d) (TwITbl b s m arr EmptyOk (Unit I) x) (Unit I) Source # | |
type LeftPosTy (OLeftOf d) (TwITbl b s m arr EmptyOk (PointL O) x) (PointL O) Source # | |
type LeftPosTy (OFirstLeft d) (TwITbl b s m arr EmptyOk (PointL O) x) (PointL O) Source # | |
type LeftPosTy (OStatic d) (TwITbl b s m arr EmptyOk (PointL O) x) (PointL O) Source # | |
Defined in ADP.Fusion.PointL.SynVar.Indices | |
type LeftPosTy (OStatic d) (TwITbl b s m arr EmptyOk (Unit O) x) (Unit O) Source # | |
type LeftPosTy (ps :. p) (TwITblBt b s arr (eos :. EmptyOk) (us :. u) x mF mB r) (is :. i) Source # | |
type LeftPosTy (IVariable d) (TwITblBt b s arr EmptyOk (PointL I) x mB mF r) (PointL I) Source # | |
type LeftPosTy (IVariable d) (TwITblBt b s arr EmptyOk (PointR I) x mB mF r) (PointR I) Source # | |
type LeftPosTy (IStatic d) (TwITblBt b s arr EmptyOk (PointL I) x mB mF r) (PointL I) Source # | |
type LeftPosTy (IStatic d) (TwITblBt b s arr EmptyOk (PointR I) x mB mF r) (PointR I) Source # | |
type LeftPosTy (IStatic d) (TwITblBt b s arr EmptyOk (Unit I) x mB mF r) (Unit I) Source # | |
type LeftPosTy (OLeftOf d) (TwITblBt s b arr EmptyOk (PointL O) x mB mF r) (PointL O) Source # | |
type LeftPosTy (OFirstLeft d) (TwITblBt b s arr EmptyOk (PointL O) x mB mF r) (PointL O) Source # | |
type LeftPosTy (OStatic d) (TwITblBt b s arr EmptyOk (PointL O) x mB mF r) (PointL O) Source # | |
Defined in ADP.Fusion.PointL.SynVar.Indices | |
type LeftPosTy (OStatic d) (TwITblBt b s arr EmptyOk (Unit O) x mB mF r) (Unit O) Source # | |
type Stack (TwIRec m c i x) Source # | |
type AxiomStream (TwIRec m c i x) Source # | |
Defined in ADP.Fusion.Core.SynVar.Recursive.Type | |
type BacktrackIndex (TwIRec mF c i x) Source # | |
Defined in ADP.Fusion.Core.SynVar.Recursive.Type | |
type TermArg (TwIRec m c i x) Source # | |
Defined in ADP.Fusion.Core.SynVar.Recursive.Type | |
data Backtrack (TwIRec mF c i x) mF mB Source # | |
type Stack (TwIRecBt c i x mF mB r) Source # | |
type Stack (TwITbl b s m arr c i x) Source # | |
type AxiomStream (TwITbl b s m arr c i x) Source # | |
Defined in ADP.Fusion.Core.SynVar.Array.Type | |
type AxiomIx (TwITbl b s m arr c i x) Source # | |
Defined in ADP.Fusion.Core.SynVar.Array.Type | |
type BacktrackIndex (TwITbl b s mF arr c i x) Source # | |
Defined in ADP.Fusion.Core.SynVar.Array.Type | |
type TermArg (TwITbl b s m arr c i x) Source # | |
Defined in ADP.Fusion.Core.SynVar.Array.Type | |
data Backtrack (TwITbl b s mF arr c i x) mF mB Source # | |
Defined in ADP.Fusion.Core.SynVar.Array.Type | |
type Stack (TwITblBt b s arr c i x mF mB r) Source # | |
type TermArg (TwITblBt b s arr c i x mF mB r) Source # | |
Defined in ADP.Fusion.Core.SynVar.Array.Type |