我在Haskell中遇到了Spock、Lucid和IO的问题。我有一个功能
f :: MySQLConn -> IO [[String]]
CCD_ 1的输出是语句"0"的结果;从表中选择*";将[MySQLValue]列表转换为[String]列表。
然后我想使用Spock中的函数f
在我的应用程序中显示输出。我试着用一些类似的东西:
(...)
get "history" $ lucid $ do
let offers = c >>= f
mapM (mapM (p_ . toHtml) ) offers
(...)
其中c
用于创建与DB的连接。但它不起作用。一个错误是:";没有因使用"mapM"而引起的(遍历IO(的实例;。
如果我尝试:
get "history" $ lucid $ do
mapM (mapM (p_ . toHtml) ) [["a", "b"], ["1","x"]]
它是正确的。所以我的问题是——我如何在这个应用程序中使用f
的结果?
我认为您可以在get
和lucid
:之间执行IO操作
get "history" $ do
offers <- liftIO $ c >>= f
lucid $ mapM (mapM (p_ . toHtml) ) offers
用CCD_ 7从CCD_。