A function stored now and called later fails at the call site, which can be a training run and several frames away from the argument that was wrong. Checking at the constructor that it is a function, and that it can take the argument it will be given, keeps the complaint next to the mistake.
