Это, вероятно, недостаточно утверждается.

Идеальная функция может принимать некоторые неизменяемые аргументы и возвращать неизменяемый объект. Он не изменяет состояние объекта. Ваше приложение не будет работать только с идеальными функциями, но постарайтесь, чтобы большинство функций были идеальными.