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.