我对 Haskell 中的 Spock、Lucid 和 IO 有疑问。我有一个功能
f :: MySQLConn -> IO [[String]]
的输出f
是语句“SELECT * FROM TABLE”的结果,其中将 [MySQLValue] 列表转换为 [String] 列表。
然后我想使用f
Spock 中的函数在我的应用程序中显示输出。我尝试使用类似的东西:
(...)
get "history" $ lucid $ do
let offers = c >>= f
mapM (mapM (p_ . toHtml) ) offers
(...)
Wherec
用于创建与 DB 的连接。但它不起作用。错误是:“没有因使用‘mapM’而产生的(可遍历 IO)实例”。
如果我尝试:
get "history" $ lucid $ do
mapM (mapM (p_ . toHtml) ) [["a", "b"], ["1","x"]]
它是正确的。所以我的问题是 - 我如何f
在这个应用程序中使用结果?