>>>>> "Richard" == Richard Fateman <fateman at cs.berkeley.edu> writes:
Richard> Before ever touching the guts of a polynomial in CRE form
Richard> it is essential that each of those gensyms be set to a value
Richard> (setf #:g1234 1)
Richard> (setf #:g345 2)
Richard> and pointergp is supposed to compare these to see whether
Richard> x or y is "more main".
Richard> Now you can't actually use setf in that way because the
Richard> nature of gensyms is that they are not interned. But if (valget a)
Richard> where a is one of those gensyms returns nil,
Richard> then someone has forgotten to initialize something.
That's probably the problem. primcyclo binds *g* to nil, and
cyclotomic pushes *g* to the front of the CRE form. And that doesn't
work so well. As you say, I guess primcyclo should bind *g* to a
gensym, and give it a value.
Richard> Probably this is more than you wanted to know, and less
Richard> than you need to know to fix the bug :(
Actually, I find this kind of historical information very
interesting. I had assumed pointergp meant something like
pointer-greater-p, and you've confirmed that. But the name is
confusing now because the implementation doesn't really have anything
to do with pointers. :-)
Ray