method learn examples =
         (* try to learn as long as the function can provide us with examples *)
         let rec loop () = 
            let example = examples self in
            match example with
               None -> ()
            |  Some example -> self#train example; loop ()
         in loop ()