diff --git a/Makefile b/Makefile index c36511e5c40a56025429fd0b2a3422ce79a55284..f48467d6d8da71cde5d369b52953baa28d1352da 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,8 @@ all: ocamlc -c polynome.ml + ocamlc -c simplepolynome.ml ocamlc -c main.ml - ocamlc -o bin/main nums.cma polynome.cmo main.cmo + ocamlc -o bin/main nums.cma polynome.cmo simplepolynome.cmo main.cmo clean: rm -f *.cm[iox] *~ .*~ #*# rm -f bin/main diff --git a/polynome.ml b/polynome.ml index d547bb60db60c23794fd20c0c9d9ea08a08db6cf..d4d47eb11fe29b3500c0fbb1eff7bf0143f67c9e 100644 --- a/polynome.ml +++ b/polynome.ml @@ -2,6 +2,20 @@ open Big_int;; +module type Coefficient = + sig + type coeff + val print_coeff: coeff -> string + end +;; + +module type Degree = + sig + type degree + val print_degree: degree -> string + end +;; + module type Polynomes = sig type polynome @@ -9,14 +23,14 @@ module type Polynomes = end ;; -module Polynome : Polynomes = +module Polynome (C : Coefficient) (D : Degree) = struct type polynome = |Null - |NotNull of big_int*int*polynome + |NotNull of C.coeff*D.degree*polynome let rec print_pol p = match p with |Null -> "0" - |NotNull (coeff, degree, polynome)-> - (string_of_big_int coeff)^"X^"^(string_of_int degree)^"+"^(print_pol polynome) + |NotNull (cc, dd, pp)-> + (C.print_coeff cc)^"X^"^(D.print_degree dd)^"+"^(print_pol pp) end ;;