sig
  module type S =
    sig
      type c45_data
      type c45_category
      type c45_trainSet
      type randomForest
      val classify :
        ORandForest.S.randomForest ->
        ORandForest.S.c45_data -> ORandForest.S.c45_category
      val genRandomForest :
        int -> ORandForest.S.c45_trainSet -> ORandForest.S.randomForest
    end
  module Make :
    functor (X : Oc45.S->
      sig
        type c45_data = X.data
        type c45_category = X.category
        type c45_trainSet = X.trainSet
        type randomForest
        val classify : randomForest -> c45_data -> c45_category
        val genRandomForest : int -> c45_trainSet -> randomForest
      end
  module IntRandForest :
    sig
      type c45_data = Oc45.IntOc45.data
      type c45_category = Oc45.IntOc45.category
      type c45_trainSet = Oc45.IntOc45.trainSet
      type randomForest
      val classify : randomForest -> c45_data -> c45_category
      val genRandomForest : int -> c45_trainSet -> randomForest
    end
  module FloatRandForest :
    sig
      type c45_data = Oc45.FloatOc45.data
      type c45_category = Oc45.FloatOc45.category
      type c45_trainSet = Oc45.FloatOc45.trainSet
      type randomForest
      val classify : randomForest -> c45_data -> c45_category
      val genRandomForest : int -> c45_trainSet -> randomForest
    end
end