Я вот не могу понять как "IO gives you referential transparency." В IO же можно завернуть что-то, что читает из вне, имеет сайд эффект. результат может быть разным при одинаковых входных параметрах. какое тогда referential transparency. :(
Я вот не могу понять как "IO gives you referential transparency." В IO же можно завернуть что-то, что читает из вне, имеет сайд эффект. результат может быть разным при одинаковых входных параметрах. какое тогда referential transparency. :(
как-будто речь про referential transparency на уровне компиляции, а в рантайме, когда ты его запустишь - то уже можешь получить разные результаты, т.е. будто нарушение referential transparency. Как-то бы прочувствовать и понять это лучше
равенство двух элементов IO[A] подразумевает "процессы произведут одинаковое воздействие на систему, т.е. из одного стартового состояния система придёт в одно конечное состояние и произведённые результаты, если будут успешно построены будут равны"
но ведь, в реальности " при условии использования чистых функций в комбинаторах" практически не соблюдается, поэтому и операции над IO[A] НЕ сохраняют ссылочную прозрачность!?
просто пример, получили от пользователя запрос, выполнили процедуру в бд и вернули резульатат. Всё не чистое, в чем тогда профит от использования тут IO для оборачивая?
но ведь, в реальности " при условии использования чистых функций в комбинаторах" практически не соблюдается, поэтому и операции над IO[A] НЕ сохраняют ссылочную прозрачность!?
просто пример, получили от пользователя запрос, выполнили процедуру в бд и вернули резульатат. Всё не чистое, в чем тогда профит от использования тут IO для оборачивая?
вы не выполнили процедуру в БД, когда сконструировали IO