鉴于我用来学习 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