[PEAK] Regular functions vs generic functions

Phillip J. Eby pje at telecommunity.com
Fri Feb 15 13:36:01 EST 2008


At 11:54 AM 2/15/2008 -0500, rdmurray at bitdance.com wrote:
>So, I have rules in my code that look like this:
>
>     @analyze.when(matches("~NP A+~D"))
>
>which results in a rule like:
>
>     len(s)>=2 and (not s[0].isNP) and (s[1].isA and not s[1].isD)

Hm.  It's possible, then, that you have an exponential blowup 
somewhere, and/or the eagerness is killing you.  Currently, class 
tests are the only part of the dispatch tree that gets lazily 
expanded, so the code is probably building out the whole tree due to 
conditions like the above.

In a worst-case scenario, a tree like this can take 2^N time and 
space to build.  But I'll have to look at the full ruleset to see if 
that's actually the case.




More information about the PEAK mailing list