私のHaskell学習プロジェクトの最後の行を考えると:
writeText $ TL.toStrict (renderHtml $(hamletFile "fileList.hamlet"))
hamletFile
の署名からの出力を変換したいと思います:
FilePath -> Q Exp
関数が期待する Html タイプに変換しrenderHtml
ます。
*私が現在行っていることに関する上記の主張は、完全に間違っている可能性があります!
私のHaskell学習プロジェクトの最後の行を考えると:
writeText $ TL.toStrict (renderHtml $(hamletFile "fileList.hamlet"))
hamletFile
の署名からの出力を変換したいと思います:
FilePath -> Q Exp
関数が期待する Html タイプに変換しrenderHtml
ます。
*私が現在行っていることに関する上記の主張は、完全に間違っている可能性があります!
あなたはこれを機能させることにかなり近づいています。Bartek と MathematicalOrchid の両方が言っているように、hamletFile "fileList.hamlet"
has typeQ Exp
は、「GHC はこれを実行して式を生成できる」ことを意味します。で囲むことで$(...)
、「GHC、式を生成してください」と言っています。次の質問は、この生成された式の型は何ですか?
Yesod bookのシェイクスピアの章でより多くの情報を得ることができますが、式には型があります:
(url -> [(Text, Text)] -> Text) -> Html
これは基本的に、「URL といくつかのクエリ文字列パラメーターをテキストに変換する方法を教えてください。HTML を提供します」という意味です。テンプレートでタイプ セーフな URL を使用していない場合は、単純に指定できますundefined
(または、使用に切り替えshamletFile
ます。詳細については、この章を参照してください)。
URL レンダリング関数を提供したら、使用renderHtml
して遅延厳密を取得し、そこから続行できます。
上記の回答と外部からの支援のおかげで、私の作業コードは次のようになりました。
writeText $ TL.toStrict (renderHtml ($(hamletFile "fileList.hamlet") "HTML"))
また、スクリプトの先頭に追加{-# LANGUAGE TemplateHaskell #-}
する必要がありました (テンプレート Haskell を操作する複雑さと関係があるようです)。