Synopsis

# 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.

Constructors

 IRec Fields:: { iRecConstraint :: !c    , iRecTo :: !(LimitType i)    } -> IRec c i x
Instances