История изменений
Исправление hateyoufeel, (текущая версия) :
Вопрос был, зачем вообще нужен IO, если всё можно сделать на Polysemy.
Потому что Polysemy реализован в терминах IO, а не наоборот. Твоя проблема в том, что ты считаешь, что IO Int
обязательно вернёт Int. Но оттуда так же может вылезти IOException, и с этим тоже надо что-то делать.
Если ты дальше спросишь, почему системы эффектов нет прямо в GHC, то потому что 25 лет назад до неё не додумались. Это сравнительно новая штука. Из коробки она есть в PureScript, например. Ну и это сравнительно небыстрая штука всё таки. Код тупо на IO быстрее кода на эффектах примерно в два-три раза в бенчмарках. В реальности всё не так страшно, но тем не менее.
Исправление hateyoufeel, :
Вопрос был, зачем вообще нужен IO, если всё можно сделать на Polysemy.
Потому что Polysemy реализован в терминах IO, а не наоборот. Твоя проблема в том, что ты считаешь, что IO Int
обязательно вернёт Int. Но оттуда так же может вылезти IOException, и с этим тоже надо что-то делать.
Если ты дальше спросишь, почему системы эффектов нет прямо в GHC, то потому что 25 лет назад до неё не додумались. Это сравнительно новая штука. Из коробки она есть в PureScript, например.
Исходная версия hateyoufeel, :
Вопрос был, зачем вообще нужен IO, если всё можно сделать на Polysemy.
Потому что Polysemy реализован в терминах IO, а не наоборот. Твоя проблема в том, что ты считаешь, что IO Int
обязательно вернёт Int. Но оттуда так же может вылезти IOException, и с этим тоже надо что-то делать.