【发布时间】:2018-09-12 08:38:46
【问题描述】:
初学者。有一个名为 HHtml 的模块输出以下内容:
setDoc = "<!DOCTYPE = <html><head>"
setTitle = "<title>" ++ htmlTitle generator ++ "</title>"
setHeader = "<header>" ++ htmlHeader generator ++ "</header>"
setMeta = "<meta>" ++ htmlMeta generator ++ "</meta></head>"
setBody = "<body>" ++ htmlBody generator ++ "</body>"
setFooter = "<footer>" ++ htmlFooter generator ++ "</footer>"
setEOF = "</html>"
setHTML = [setDoc, setTitle, setHeader, setMeta, setBody, setFooter, setEOF]
主文件:
import HHtml
import System.IO
main = do
let content = mapM_ putStrLn setHTML
writeFile "index.html" content
现在,无论我怎么看,我都会不断收到Couldn't match type IO() with [Char] 或任何变体。我理解错误消息,但我对修复它感到非常困惑。谢谢指点!
【问题讨论】:
-
修复取决于您要达到的目标。这段代码应该做什么?
-
输出 (writeFile) 使用
mapM_在列表setHTML上创建的 html。 setDoc、setTitle 等只是占位符 -
你用
mapM_做什么? -
因为最终列表中的值将是 IO 摄入量
-
只是为了确保 - 如果您将其用于生产,请确保您控制输入或进行一些转义以避免 JS 注入