sig
  type 'a knowledge
  val learn : 'Types.example list -> 'Bayes.knowledge list
  val evaluate : 'Bayes.knowledge list -> Types.attribute array -> 'a
  val print_knowledge : ('-> 'b) -> 'Bayes.knowledge -> unit
end