【问题标题】:Yesod's shakespearean templates (hamlet) and IOYesod 的莎士比亚模板 (hamlet) 和 IO
【发布时间】:2014-06-12 15:53:00
【问题描述】:

在哈姆雷特中,如何使用#{...} 内部的 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'

我担心我没有从正确的角度解决这个问题,有人可以为我解释一下这个问题吗?

谢谢

【问题讨论】:

    标签: haskell yesod hamlet io-monad


    【解决方案1】:

    Hamlet 只是为普通的 Haskell 代码提供了另一种语法,所以就像普通的 Haskell 一样,你必须将不纯的操作分开。换句话说,您需要在模板之外运行 IO 操作。

    【讨论】:

      猜你喜欢
      • 2016-06-20
      • 1970-01-01
      • 1970-01-01
      • 2017-09-28
      • 1970-01-01
      • 1970-01-01
      • 2013-02-09
      • 1970-01-01
      • 2013-08-07
      相关资源
      最近更新 更多