尽管我有在Haskell取得进步的感觉,但我仍然不能百分百适应环境。在此处获取代码:
extractData :: IO ()
extractData = do
id <- getLine
let userToolIDSelect = (read id) :: Int
connection <- open "tools.db"
resp <- query connection "SELECT * FROM tools WHERE toolID = (?);"
(Only userToolIDSelect) :: IO [Tool]
mapM_ print resp
工作正常,但是如何使用mapM_
生成可以使用的东西?我只能将其打印到控制台,但是我想拥有例如。返回列表,以便我可以将其写入文件并将其导入另一个文件中进行处理...
Haskell中的可能性和库的数量使我有些眼花and乱,有时使我失去了专注力。想想又是时候了。
答案 0 :(得分:0)
好吧,您只需传递所需的函数即可,而不是print
。使用lambda进行简单处理:
mapM_ (\tool -> ...) resp
或作为单独的IO操作:
doSomethingWithTool :: Tool -> IO ()
doSomethingWithTool tool = do
...
return ()
然后
mapM_ doSomethingWithTool resp