LEARNER CREATION The implementor of a learning algorithm will deliver their software by means of a learner *mk_xxx_learner() function. See examples/linearreg.cpp for an example of this and of the general process of implementing the functions for a new learner. When creating a learner in mk_xxx_learner, the implementor should set the fields to reflect all the functions they have provided. Fields representing any unimplemented functions should be NULL. Remember that the xxx_predict function MUST be implemented for all learners. If the learner uses training, then mk_xxx_hypo and free_xxx_hypo must be provided. If the learners uses parameters, then mk_xxx_default_params and free_xxx_params must be provided. Having written mk_xxx_learner and the functions for that learner, the implementor of a new algorithm has two more things to do. They must modify the definitions of the following two functions given in the file examples/learner.cpp, to add in their new learner. learner *mk_learner_from_string(char *learner_name) string_array *mk_learner_names() The string used to name the learner must be identical in both cases.