Как проверять значения внутри монады-обработчика в ghci?

#haskell #types #yesod

#haskell #типы #yesod

Вопрос:

У меня есть тип, Handler [Maybe AvailableDay] я хотел бы проверить содержимое [Возможно, AvailableDay] в ghci. Как мне это сделать?

Ответ №1:

Вы не можете просто извлечь «содержимое» a Handler , поскольку Handler на самом деле это вычисление, которое может зависеть от текущего запроса, состояния сеанса и так далее. Итак, чтобы запустить его, вам пришлось бы передать ему все это. Это потребовало бы использования runHandler , за которым следует unYesodApp и run для результирующего Iteratee . Технически возможно, но невероятно сложно сделать самостоятельно.

Если вы не думаете, что значение зависит от чего-либо из этого, тогда вы должны быть в состоянии переписать его как чистое вычисление или одно в IO монаде, что должно быть намного проще в запуске.