Здравствуйте, AlexRK, Вы писали:
ARK>Здравствуйте, Sinclair, Вы писали:
S>>Погодите, погодите. А что, интуитивно очевидный способ уже не работает?
S>>Делаем очень просто:
S>>1. Функция является грязной, если она принимает IO среди своих аргументов.
S>>2. Функция, вызывающая грязную, является грязной.
S>>Всё. Все остальные функции — грязные.
ARK>Абсолютно верный, правильный и единственно разумный способ. Увы, мой собеседник не принимает такого подхода, поэтому я играю на его поле и пытаюсь продемонстрировать, что его подход является бессмысленным.
Я абсолютно согласен с таким подходом. Если функция обращается к миру — она грязная. Но тут есть нюанс. putStr не обращается к миру, следовательно она сама не грязная в соответствии с таким подходом. Обращается к миру функция, возвращенная putStr-ом в качестве результата. Она — грязная.
Добро пожаловать в Реальный мир, детка :)
Что же в этом бессмысленного?