Сигнатура целиком
Иногда функция принимает другую функцию и возвращает обёртку с той же сигнатурой: кеширование, логирование, задержка, однократный вызов. Чтобы обёртка не потеряла типы, нужно перенести и аргументы, и результат.
В задании once: исходная функция вызывается только в первый раз, дальше возвращается запомненный результат.

