let mod_poly =
let rec
f = function
p1, p2 -> (* not (is_null_poly (p2)) *)
let
(q, r) = euclid_div_poly (p1, p2)
in
r
in
function
p1, p2 -> if not (is_null_poly (p2))
then f (p1, p2)
else failwith ("mod_poly : requires a non-null polynomial as its second argument")