If R is the provided ring then R[X] is the returned polynomial ring:
Given a ring R in the form of the following seven arguments, return a tool list for the Polynomials over the ring.

((fileVal "Poly/poly") zer zer? + - * rng? one)

The only use of rng? is to produce the last element of the yield and the only requirement on one is that (zer? one) yield #f.
The returned value is the list with elements: '() serves as a zero and null? serves as a zero test.
Division Pack.
z = ((fileVal "Poly/qr") / zer zer? + - * rng? one)
The arguments are the same as for "Poly/poly" above except for the additional multiplicative inverse.

For polynomials n and d≠0 the yield of ((z 'qr) n d) is a pair of polynomials (q . r) such that n = qd + r and r is of lesser degree than d.

(z 'ply) is the yield of (fileVal "Poly/poly") above for the same arguments.

((z 'gcd) p q) returns the gcd of polynomials p and q. The high order term is always one.

((fileVal "Poly/tfe") / zer zer? + - * rng? one) with the same arguments as qr yields a list of values for the transcendental extension over the rationals. The field is the smallest subfield of the reals which include some particular transcendental value, which need not be specified. Field elements are represented as the quotient of a pair of polynomials in the transcendental value. Somewhat less esoteric is to say that this is the field of rational functions of one variable. It is the same thing except perhaps for finite fields.

The high order term of the denominator must be the value provided by the last argument to (fileVal "Poly/tfe") which must be the multiplicative identity of the underlying ring. There is a debugging switch bug which controls verification and reporting of such values coming into and going out of this module.

(((fileVal "Poly/pv") zer + *) p f) returns the value of the polynomial in the conventional sense of polynomial (not abstract). f is a value from the ring upon which the polynomial ring is built.
Project that launched this stuff.