Sav*_*nel 3 haskell web-frameworks happstack
我正在使用blaze-html.我终于能够总结我的头脑如何使用它,但是一些monad和变换确实让我一直绊倒.但是这里有一个特殊的绊脚石(很多人都会这么做,但是我会离开这里再到Happstack的Response和ServerPart monad).
如果我想将字符串文本附加到段落,我必须使用此函数(来自Text.Blaze.Html5):
p . toHtml :: ToMessage a => a -> Html
一切都很好,除了......
toHtml :: ToMarkup a => a -> Markup
p :: Html -> Html
我尽我所能搜索文档,我看不出Markup monad和Html monad是如何相互关联的.我如何处理所有类型和类型类?
它们是同义词(即它们是相同的类型),如文档中所示.
另外,调用这些类型monad是不正确的.他们只是类型.然而,它们是由monad(MarkupM)构造的.
作为一个快速检查,如果某个类型是由另一种类型参数化(有类型* -> *),则可以将其称为monad .这是必要的(但不是充分的)条件.