So I initially thought that the NFL theorem meant that an algorithm that is good at learning in one problem domain is necessarily bad at learning in a different problem domain. But, after reading a little more closely, I now think that it means that an algorithm that is good at learning a particular instance in a problem domain is necessarily bad at learning a different instance in that same domain.
To illustrate with an example (drawn from my home field of cognitive science), I initially thought that NFL meant that an algorithm that was good at learning the syntax of a natural language would be bad at learning, say, what kinds of objects exist in the world. However, if my new understanding of the theorem is correct, it really means that an algorithm that is particularly good at learning the syntax of English would be bad at learning the syntax of Arabic.
Is this on the right track?