1

私のHaskell学習プロジェクトの最後の行を考えると:

writeText $ TL.toStrict (renderHtml $(hamletFile "fileList.hamlet")) 

hamletFile署名からの出力を変換したいと思います:

FilePath -> Q Exp

関数が期待する Html タイプに変換しrenderHtmlます。

*私が現在行っていることに関する上記の主張は、完全に間違っている可能性があります!

4

3 に答える 3

2

あなたはこれを機能させることにかなり近づいています。Bartek と MathematicalOrchid の両方が言っているように、hamletFile "fileList.hamlet"has typeQ Expは、「GHC はこれを実行して式を生成できる」ことを意味します。で囲むことで$(...)、「GHC、式を生成してください」と言っています。次の質問は、この生成された式の型は何ですか?

Yesod bookのシェイクスピアの章でより多くの情報を得ることができますが、式には型があります:

(url -> [(Text, Text)] -> Text) -> Html

これは基本的に、「URL といくつかのクエリ文字列パラメーターをテキストに変換する方法を教えてください。HTML を提供します」という意味です。テンプレートでタイプ セーフな URL を使用していない場合は、単純に指定できますundefined(または、使用に切り替えshamletFileます。詳細については、この章を参照してください)。

URL レンダリング関数を提供したら、使用renderHtmlして遅延厳密を取得し、そこから続行できます。

于 2014-09-03T15:12:22.400 に答える
1

上記の回答と外部からの支援のおかげで、私の作業コードは次のようになりました。

writeText $ TL.toStrict (renderHtml ($(hamletFile "fileList.hamlet") "HTML"))

また、スクリプトの先頭に追加{-# LANGUAGE TemplateHaskell #-}する必要がありました (テンプレート Haskell を操作する複雑さと関係があるようです)。

于 2014-09-03T19:02:19.277 に答える