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

Safe HaskellNone
LanguageHaskell2010

ADP.Fusion.SynVar.Array.Type

Synopsis

Documentation

data ITbl m arr i x where Source

Immutable table.

Constructors

ITbl :: !Int -> !Int -> !(TblConstraint i) -> !(arr i x) -> !(i -> i -> m x) -> ITbl m arr i x 

Fields

iTblBigOrder :: !Int
 
iTblLittleOrder :: !Int
 
iTblConstraint :: !(TblConstraint i)
 
iTblArray :: !(arr i x)
 
iTblFun :: !(i -> i -> m x)
 

Instances

SplitIxCol uId (SameSid uId (Elm ls i)) (Elm ls i) => SplitIxCol uId True (Elm ((:!:) ls (Split sId splitType (Backtrack (ITbl mF arr j x) mF mB r))) i) 
SplitIxCol uId (SameSid uId (Elm ls i)) (Elm ls i) => SplitIxCol uId True (Elm ((:!:) ls (Split sId splitType (ITbl m arr j x))) i) 
(Monad mB, Element ls PointL, PrimArrayOps arr PointL x, MkStream mB ls PointL) => MkStream mB ((:!:) ls (Backtrack (ITbl mF arr PointL x) mF mB r)) PointL 
(Monad m, Element ls PointL, PrimArrayOps arr PointL x, MkStream m ls PointL) => MkStream m ((:!:) ls (ITbl m arr PointL x)) PointL 
(Monad m, Element ls BitSet, PrimArrayOps arr BitSet x, MkStream m ls BitSet) => MkStream m ((:!:) ls (ITbl m arr BitSet x)) BitSet 
(Monad mB, FirstSecond ls (arr ((:.) ((:.) Z Subword) Subword) x), FirstSecondIdx ls (arr ((:.) ((:.) Z Subword) Subword) x) Subword, PrimArrayOps arr ((:.) ((:.) Z Subword) Subword) x, Element ls Subword, MkStream mB ls Subword, Show r) => MkStream mB ((:!:) ls (Backtrack (ITbl mF arr ((:.) ((:.) Z Subword) Subword) x) mF mB r)) Subword 
(Monad m, Element ls Subword, FirstSecond ls (arr ((:.) ((:.) Z Subword) Subword) x), FirstSecondIdx ls (arr ((:.) ((:.) Z Subword) Subword) x) Subword, PrimArrayOps arr ((:.) ((:.) Z Subword) Subword) x, MkStream m ls Subword, Show x) => MkStream m ((:!:) ls (ITbl m arr ((:.) ((:.) Z Subword) Subword) x)) Subword 
(Monad mB, Element ls Subword, MkStream mB ls Subword, PrimArrayOps arr Subword x) => MkStream mB ((:!:) ls (Backtrack (ITbl mF arr Subword x) mF mB r)) Subword 
(Monad m, Element ls Subword, PrimArrayOps arr Subword x, MkStream m ls Subword) => MkStream m ((:!:) ls (ITbl m arr Subword x)) Subword 
(Monad mB, Element ls Subword, MkStream mB ls Subword, SplitIxCol uId (SameSid uId (Elm ls Subword)) (Elm ls Subword), (~) * ((:.) (SplitIxTy uId (SameSid uId (Elm ls Subword)) (Elm ls Subword)) Subword) mix, PrimArrayOps arr ((:.) (SplitIxTy uId (SameSid uId (Elm ls Subword)) (Elm ls Subword)) Subword) x) => MkStream mB ((:!:) ls (Split uId Final (Backtrack (ITbl mF arr mix x) mF mB r))) Subword 
(Monad mB, Element ls Subword, MkStream mB ls Subword) => MkStream mB ((:!:) ls (Split uId Fragment (Backtrack (ITbl mF arr j x) mF mB r))) Subword 
(Monad m, Element ls Subword, MkStream m ls Subword, SplitIxCol uId (SameSid uId (Elm ls Subword)) (Elm ls Subword), (~) * ((:.) (SplitIxTy uId (SameSid uId (Elm ls Subword)) (Elm ls Subword)) Subword) mix, PrimArrayOps arr ((:.) (SplitIxTy uId (SameSid uId (Elm ls Subword)) (Elm ls Subword)) Subword) x) => MkStream m ((:!:) ls (Split uId Final (ITbl m arr mix x))) Subword 
(Monad m, Element ls Subword, MkStream m ls Subword) => MkStream m ((:!:) ls (Split uId Fragment (ITbl m arr j x))) Subword 
(Monad om, MutateCell h ((:.) ts (ITbl im arr i x)) im om i, PrimArrayOps arr i x, Show i, IndexStream i, TableOrder ((:.) ts (ITbl im arr i x))) => MutateTables h ((:.) ts (ITbl im arr i x)) im om 
(PrimArrayOps arr ZS2 x, MPrimArrayOps arr ZS2 x, MutateCell MonotoneMCFG ts im om ZS2, PrimMonad om) => MutateCell MonotoneMCFG ((:.) ts (ITbl im arr ZS2 x)) im om ZS2 
(PrimArrayOps arr i x, MPrimArrayOps arr i x, MutateCell CFG ts im om i, PrimMonad om, Show x, Show i) => MutateCell CFG ((:.) ts (ITbl im arr i x)) im om i 
(PrimArrayOps arr Subword x, MPrimArrayOps arr Subword x, MutateCell h ts im om ((:.) ((:.) Z Subword) Subword), PrimMonad om) => MutateCell h ((:.) ts (ITbl im arr Subword x)) im om ((:.) ((:.) Z Subword) Subword) 
(Monad mB, Element ls (Outside ((:.) is i)), TableStaticVar (Outside ((:.) is i)), TableIndices (Outside ((:.) is i)), MkStream mB ls (Outside ((:.) is i)), PrimArrayOps arr (Outside ((:.) is i)) x, Show ((:.) is i)) => MkStream mB ((:!:) ls (Backtrack (ITbl mF arr (Outside ((:.) is i)) x) mF mB r)) (Outside ((:.) is i)) 
(Monad m, Element ls (Outside ((:.) is i)), TableStaticVar (Outside ((:.) is i)), TableIndices (Outside ((:.) is i)), MkStream m ls (Outside ((:.) is i)), PrimArrayOps arr (Outside ((:.) is i)) x, Show ((:.) is i)) => MkStream m ((:!:) ls (ITbl m arr (Outside ((:.) is i)) x)) (Outside ((:.) is i)) 
(Monad mB, Element ls (Outside PointL), PrimArrayOps arr (Outside PointL) x, MkStream mB ls (Outside PointL)) => MkStream mB ((:!:) ls (Backtrack (ITbl mF arr (Outside PointL) x) mF mB r)) (Outside PointL) 
(Monad m, Element ls (Outside PointL), PrimArrayOps arr (Outside PointL) x, MkStream m ls (Outside PointL)) => MkStream m ((:!:) ls (ITbl m arr (Outside PointL) x)) (Outside PointL) 
(Monad m, Element ls (Complement Subword), PrimArrayOps arr (Outside Subword) x, MkStream m ls (Complement Subword)) => MkStream m ((:!:) ls (ITbl m arr (Outside Subword) x)) (Complement Subword) 
(Monad m, Element ls (Complement Subword), PrimArrayOps arr Subword x, MkStream m ls (Complement Subword)) => MkStream m ((:!:) ls (ITbl m arr Subword x)) (Complement Subword) 
(Monad m, Element ls (Outside Subword), PrimArrayOps arr Subword x, MkStream m ls (Outside Subword)) => MkStream m ((:!:) ls (ITbl m arr Subword x)) (Outside Subword) 
(Monad m, Element ls (Outside Subword), PrimArrayOps arr (Outside Subword) x, MkStream m ls (Outside Subword)) => MkStream m ((:!:) ls (ITbl m arr (Outside Subword) x)) (Outside Subword) 
(Monad mB, Element ls ((:.) is i), TableStaticVar ((:.) is i), TableIndices ((:.) is i), MkStream mB ls ((:.) is i), PrimArrayOps arr ((:.) is i) x) => MkStream mB ((:!:) ls (Backtrack (ITbl mF arr ((:.) is i) x) mF mB r)) ((:.) is i) 
(Monad m, Element ls ((:.) is i), TableStaticVar ((:.) is i), TableIndices ((:.) is i), MkStream m ls ((:.) is i), PrimArrayOps arr ((:.) is i) x) => MkStream m ((:!:) ls (ITbl m arr ((:.) is i) x)) ((:.) is i) 
(Monad m, Element ls (BS2I First Last), PrimArrayOps arr (BS2I First Last) x, MkStream m ls (BS2I First Last), Show x) => MkStream m ((:!:) ls (ITbl m arr (BS2I First Last) x)) (BS2I First Last) 
(Monad mB, TerminalStream mB a is, PrimArrayOps arr Subword x) => TerminalStream mB (TermSymbol a (Backtrack (ITbl mF arr Subword x) mF mB r)) ((:.) is Subword) 
(Monad m, TerminalStream m a is, PrimArrayOps arr Subword x, Show x) => TerminalStream m (TermSymbol a (ITbl m arr Subword x)) ((:.) is Subword)

TODO need to deal with minSize

(Show x, Show i, Show (Elm ls i)) => Show (Elm ((:!:) ls (Backtrack (ITbl mF arr i x) mF mB r)) i) 
(Show i, Show (Elm ls i), Show x) => Show (Elm ((:!:) ls (ITbl m arr j x)) i) 
TableOrder ts => TableOrder ((:.) ts (ITbl im arr i x)) 
Element ls i => Element ((:!:) ls (Backtrack (ITbl mF arr j x) mF mB r)) i 
Element ls i => Element ((:!:) ls (ITbl m arr j x)) i 
Element ls i => Element ((:!:) ls (Split uId splitType (Backtrack (ITbl mF arr j x) mF mB r))) i 
Element ls i => Element ((:!:) ls (Split uId splitType (ITbl m arr j x))) i 
GetIxs ls i => GetIxs ((:!:) ls (ITbl m a i x)) i 
FirstSecond ls (arr ((:.) ((:.) Z Subword) Subword) x) => FirstSecond ((:!:) ls (Backtrack (ITbl mF arr ((:.) ((:.) Z Subword) Subword) x) mF mB r)) (arr ((:.) ((:.) Z Subword) Subword) x) 
FirstSecond ls (arr ((:.) ((:.) Z Subword) Subword) x) => FirstSecond ((:!:) ls (ITbl m arr ((:.) ((:.) Z Subword) Subword) x)) (arr ((:.) ((:.) Z Subword) Subword) x) 
(FirstSecondIdx ls (arr ((:.) ((:.) Z Subword) Subword) x) Subword, (~) * (Elm ls Subword) (RecElm ((:!:) ls (Backtrack (ITbl mF arr ((:.) ((:.) Z Subword) Subword) x) mF mB r)) Subword), Element ls Subword) => FirstSecondIdx ((:!:) ls (Backtrack (ITbl mF arr ((:.) ((:.) Z Subword) Subword) x) mF mB r)) (arr ((:.) ((:.) Z Subword) Subword) x) Subword 
(FirstSecondIdx ls (arr ((:.) ((:.) Z Subword) Subword) x) Subword, (~) * (Elm ls Subword) (RecElm ((:!:) ls (ITbl m arr ((:.) ((:.) Z Subword) Subword) x)) Subword), Element ls Subword) => FirstSecondIdx ((:!:) ls (ITbl m arr ((:.) ((:.) Z Subword) Subword) x)) (arr ((:.) ((:.) Z Subword) Subword) x) Subword 
(Monad mB, PrimArrayOps arr i x, IndexStream i) => Axiom (Backtrack (ITbl mF arr i x) mF mB r) 
(Monad m, PrimArrayOps arr i x, IndexStream i) => Axiom (ITbl m arr i x) 
ModifyConstraint (Backtrack (ITbl mF arr Subword x) mF mB r) 
ModifyConstraint (ITbl m arr Subword x) 
Build (ITbl m arr i x) 
TermStaticVar (Backtrack (ITbl mF arr Subword x) mF mB r) Subword 
TermStaticVar (ITbl m arr Subword x) Subword 
GenBacktrackTable (ITbl mF arr i x) mF mB r 
type SplitIxTy uId True (Elm ((:!:) ls (Split sId splitType (Backtrack (ITbl mF arr 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 (ITbl m arr j x))) i) = (:.) (SplitIxTy uId (SameSid uId (Elm ls i)) (Elm ls i)) i 
data Elm ((:!:) ls (Backtrack (ITbl mF arr j x) mF mB r)) = ElmBtITbl !x [r] !i !i !(Elm ls i) 
data Elm ((:!:) ls (ITbl m arr j x)) = ElmITbl !x !i !i !(Elm ls i) 
data Elm ((:!:) ls (Split uId splitType (Backtrack (ITbl mF arr j x) mF mB r))) = ElmSplitBtITbl !(Proxy Symbol uId) !(CalcSplitType splitType (x, [r])) !i !i !(Elm ls i) 
data Elm ((:!:) ls (Split uId splitType (ITbl m arr j x))) = ElmSplitITbl !(Proxy Symbol uId) !(CalcSplitType splitType x) !i !i !(Elm ls i) 
type Arg ((:!:) ls (Backtrack (ITbl mF arr j x) mF mB r)) = (:.) (Arg ls) (x, [r]) 
type Arg ((:!:) ls (ITbl m arr j x)) = (:.) (Arg ls) x 
type Arg ((:!:) ls (Split uId splitType (Backtrack (ITbl mF arr j x) mF mB r))) = (:.) (Arg ls) (CalcSplitType splitType (x, [r])) 
type Arg ((:!:) ls (Split uId splitType (ITbl m arr j x))) = (:.) (Arg ls) (CalcSplitType splitType x) 
type TermArg (TermSymbol a (Backtrack (ITbl mF arr i x) mF mB r)) = (:.) (TermArg a) (x, [r]) 
type TermArg (TermSymbol a (ITbl m arr i x)) = (:.) (TermArg a) x 
type RecElm ((:!:) ls (Backtrack (ITbl mF arr j x) mF mB r)) i = Elm ls i 
type RecElm ((:!:) ls (ITbl m arr j x)) i = Elm ls i 
type RecElm ((:!:) ls (Split uId splitType (Backtrack (ITbl mF arr j x) mF mB r))) i = Elm ls i 
type RecElm ((:!:) ls (Split uId splitType (ITbl m arr j x))) i = Elm ls i 
type R ((:!:) ls (ITbl m a i x)) i = (:.) (R ls i) (i, i) 
type AxiomStream (Backtrack (ITbl mF arr i x) mF mB r) = mB [r] 
type AxiomStream (ITbl m arr i x) = m x 
type Stack (ITbl m arr i x) = (:!:) S (ITbl m arr i x) 
type BacktrackIndex (ITbl mF arr i x) = i 
data Backtrack (ITbl mF arr i x) mF = BtITbl !(TblConstraint i) !(arr i x) (i -> i -> mB [r])