Шекспировские шаблоны Йесода (деревня) и IO

В Гамлете, как использовать результат операции ввода-вывода внутри #{...}?

Например:

someIO :: IO String
-----------------

$with stuff <- someIO
    <p>#{stuff}

Сбой с

No instance for (blaze-markup-0.6.0.0:Text.Blaze.ToMarkup
                       (IO String))
      arising from a use of `toHtml'

Я боюсь, что я не подошел к проблеме с правильной точки зрения, может кто-то пролить свет на эту проблему для меня?

Спасибо

1 ответ

Решение

Гамлет просто предоставляет альтернативный синтаксис для нормального кода на Haskell, поэтому, как и в обычном Haskell, вы должны хранить свои нечистые действия отдельно. Другими словами, вам нужно запустить действие ввода-вывода вне шаблона.

Другие вопросы по тегам