How is this not just reimplementing func.apply?