let monomial =
let rec
f = function
a, d -> (* d >= 0 & not (eq_rat (a, cons_rat (", "))) *)
if d = 0
then cons_poly (a, null_poly ())
else x_times (f (a, d - 1))
in
function
a, d -> if d >= 0 & not (eq_rat (a, cons_rat ("0", "1")))
then f (a, d)
else failwith ("monomial : requires a non-null coefficient as its first argument and a non-negative degree as its second one")