вы как всегда не понимаете, что ИО нужно чтобы разделить формирование ИО и исполнение, а не для того, чтобы выводить на экран чистой функцией - это невозможно
потому что ты плохо меня читал. я показал как можно постепенно ПОДМЕНЯТЬ понятия. сначала ты шараешь пурити тем что ты возвращаешь код с захваченными данными вместо данных - это первый шаг. а потом ты подменяешь тем что говоришь что этот код как бы "вызывается снаружи" и поэтому он чистый