combine(x, y, monomialTimes, coeffTimes, coeffPlus)We illustrate that with a simple-minded implmentation of the free ring on the English alphabet, representing words as string and polynomials as hash tables that associate coefficients to words.
i1 : Poly = new Type of HashTable o1 = Poly o1 : Type |
i2 : p = new Poly from { "" => 1, "x" => 2, "y" => 3, "cat" => 5 } o2 = Poly{ => 1 } cat => 5 x => 2 y => 3 o2 : Poly |
i3 : Poly * Poly := (p,q) -> combine(p,q,concatenate,times,plus); |
i4 : p*p o4 = Poly{ => 1 } cat => 10 catcat => 25 catx => 10 caty => 15 x => 4 xcat => 10 xx => 4 xy => 6 y => 6 ycat => 15 yx => 6 yy => 9 o4 : Poly |
The object combine is a compiled function.