Safe Haskell | None |
---|---|
Language | Haskell2010 |
Documentation
data IRec c i x where Source #
A syntactic variable that does not memoize but simplify recurses. One
needs to be somewhat careful when using this one. ITbl
performs
memoization to perform DP in polynomial time (roughly speaking). If the
rules for an IRec
are of a particular type, they will exponential
running time. Things like X -> X X
are, for example, rather bad. Rules
of the type X -> Y, Y -> Z
are ok, if Y
is an IRec
since we just
continue on. The same holds for Y -> a Y
. Basically, things are safe
if there is only a (small) constant number of parses of an IRec
synvar.
IRec | |
|
Instances
(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 # | |
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 # | |
(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 # | |
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 | |
type Arg (ls :!: TwIRec m c u x) Source # | |
type Arg (ls :!: TwIRecBt c u x mF mB r) Source # | |
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 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 # | |