It's not intuitively obvious what the "correct" solution ought to be. If cloner is a deep-cloning function, and f is a function, which of the following should be true?
1. cloner(f) === f?
2. For all ...args, cloner(f)(...args) === f(...args)?
3. For all ...args, cloner(f)(...args) === cloner(f(...args))?
4. For all ...args, cloner(f)(...args) === f(...args.map(cloner))?
5. For all ...args, cloner(f)(...args) === cloner(f(...args.map(cloner)))?
6. Something else entirely?