functor (R : T->
  sig
    type t = R.t
    val eq : t -> t -> bool
    val add : t -> t -> t
    val zero : t
    val neg : t -> t
    val mul : t -> t -> t
    val one : t
    val to_string : t -> string
  end