2

私は急成長しているいくつかの Haskell ベースの Web アプリケーションに取り組んできましたが、この問題に悩まされています。コードの早い段階で定義したテンプレートがあるとします。

{-# LANGUAGE OverloadedStrings #-}
import Text.Blaze.Html5
import Text.Blaze.Html5.Attributes
import qualified Text.Blaze.Html5 as H
import qualified Text.Blaze.Html5.Attributes as A

foo = H.div ! class_ "foo"

その後、 を使用することfooにしましたが、わずかな非破壊的な修正が加えられています。

bar = foo ! class_ "bar" -- this should add bar to the classes available, imo

残念ながら、htmlをレンダリングすると、次の結果が得られます。

import Text.Blaze.Html.Renderer.String

λ: renderHtml $ bar "baz"


↪ "<div class=\"foo\" class=\"bar\"></div>"

結局のところ、これはモナドです!この種のロジックを blaze-html に統合する方法はありますか? それとも、それはテンプレート フレームワークの範囲を超えていますか? 次のような方法で何かを実行できるような選択方法 (jQuery など) はありますか?

bar' = do
  classes <- classesOf foo
  H.div ! class_ (classes ++ " bar")

誰かがこれを回避する方法を見つけましたか? Haskell 用の型支援 Html ツールはありますか? これには本当に頭を悩ませ、恐ろしいアイデアを思いつきます...

4

1 に答える 1