3

私はblaze-htmlで作業しています。私は最終的にそれをどのように使用するかについて頭を悩ませることができるようになりましたが、モナドと変換のいくつかは本当にいつも私をつまずかせます。しかし、ここに 1 つの特定のつまずきがあります (非常に多くの障害がありますが、ここから Happstack の Response モナドと ServerPart モナドに至るまでは別の日にします)。

文字列テキストを段落に添付したい場合は、この関数を使用する必要があります (Text.Blaze.Html5 から):

p . toHtml :: ToMessage a => a -> Html

すべて、まあまあ、良いことを除いて...

toHtml :: ToMarkup a => a -> Markup
p :: Html -> Html

できる限りドキュメントを検索しましたが、Markup モナドと Html モナドが互いにどのように関連付けられているかわかりません。すべての型と型クラスを処理するにはどうすればよいですか?

4

1 に答える 1

6

ドキュメントに示されているように、これらは同義語です(つまり、同じタイプです)。

また、これらのタイプをモナドと呼ぶのは正しくありません。それらは単なるタイプです。ただし、これらはモナド(MarkupM)から構成されています。

簡単なチェックとして、それが別のタイプによってパラメーター化されたタイプである場合(kindを持っている場合)、何かをモナドと呼ぶことができます* -> *。これは必要な(しかし十分ではない)条件です。

于 2012-09-21T20:45:38.000 に答える