How to handle NaN?
Suppose some function returns NaN for some input value, how should this be handled?
I think the user should at least be warned that the function is ill-behaved.
Then we could still continue learning the function but then ignoring this point for any further evaluation, so we then more or less keep those points in the pending points indefinitely, which could slow down the learner a lot if there are many points that return NaN.
Or we could simply raise an exception and terminate the runner. Which could be inconvenient if you let it run overnight and find in the morning that your learner stopped.