Haskell の学習に使用しているこの小さなプロジェクトを考えると、リクエスト ハンドラーのコード生成を Hamlet テンプレートに移動したいと考えていますが、どのように渡すかがわかりません。
私の現在のコードは、最初のブロッカーである行のコメントを外すと、次のエラーを生成します。
予期されるタイプ `String -> String' と一致しませんでした 実際の型「文字列」で `renderHtml' の呼び出しの戻り値の型で 考えられる原因: `renderHtml' が適用される引数が多すぎます 式: renderHtml ($ (shamletFile "fileList.hamlet")) 「myTemplate」の方程式では: myTemplate = renderHtml ($ (shamletFile "fileList.hamlet"))
コード:
site :: Snap ()
site =
ifTop (writeBS "hello world") <|>
route [ ("foo", writeBS "ba"),
("view_root_json_files", listRootFilesHandler)
] <|>
dir "static" (serveDirectory ".")
--myTemplate :: String -> String
--myTemplate = renderHtml ( $(shamletFile "fileList.hamlet") )
toText :: [FilePath] -> Text
toText = foldMap (flip snoc '\n' . pack)
listRootFilesHandler :: Snap ()
listRootFilesHandler = do
filenames <- liftIO $ getDirectoryContents "data"
let filtered_filenames = filter (not . isPrefixOf ".") filenames
writeText $ toText filtered_filenames