Closed olegromashin closed 3 years ago
Добрый вечер, Роман. Это вопрос или рекомендации к исправлению?
Если это вопрос, попытаюсь ответить. У меня значение значение функции NewDict завернуто в монаду IO для того, чтобы иметь возможность продолжить монадические вычисления, передав значение с помощью функции >>= в следующую функцию - loopBoot. В рекомендованной статье по Service Pattern (https://www.schoolofhaskell.com/user/meiersi/the-service-pattern) рекомендуется помещать в Handle функции именно с таким типом значения. Но, это я так понял. Поправь меня, пожалуйста, если я чего-то не понял.
Это вопрос или рекомендации к исправлению?
И то, и другое :) Функция не выполняет никаких IO действий, поэтому нет смысла цеплять к ней IO. Ты же, например, не будешь оборачивайть что-то в Maybe без причины. Продолжить цепочку вычислений можно и без IO в этом действии, например, так:
do
res <- action1 >>= action2 >>= action3
let x = 42
action4 x res >>= action5
Спасибо, я понял. Если ты считаешь, что так, как у меня, делать нельзя, лучше реализовать все в do-нотации, пренебречь при этом советами упомянутой выше статьи, верни, пожалуйста это issue в статус open, я исправлю
Если ты считаешь, что так, как у меня, делать нельзя, лучше реализовать все в do-нотации, пренебречь при этом советами упомянутой выше статьи
Я думаю, ты не совсем понимаешь, как это работает. Монадические вычисления не прерываются, если ты переписываешь выражение в do-нотацию.
верни, пожалуйста это issue в статус open, я исправлю
У меня нет прав, верни, пожалуйста, сам :)
Да, нет, это как раз понимаю, просто казалось, что так симпатичнее Понял, исправлю
Исправил
Почему newDict в монаде IO?