Шекспировские шаблоны Йесода (гамлет) и 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'

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

Спасибо


person gxtaillon    schedule 27.04.2014    source источник


Ответы (1)


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

person Michael Snoyman    schedule 27.04.2014