<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _fun_names_iter(self, functyp, val):
 """Iterate over the names of the functions in ``val``, adding them to ``funcstore`` if they are missing; or if the items in ``val`` are already the names of functions in ``funcstore``, iterate over those. """

        funcstore = getattr(self.engine, functyp)
        for v in val:
            if callable(v):
                # Overwrites anything already on the funcstore, is that bad?
                setattr(funcstore, v.__name__, v)
                yield v.__name__
            elif v not in funcstore:
                raise KeyError("Function {} not present in {}".format(
                    v, funcstore._tab
                ))
            else:
                yield v