Haskell mapM_为其他格式

时间:2018-11-15 12:17:04

标签: haskell io

尽管我有在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乱,有时使我失去了专注力。想想又是时候了。

1 个答案:

答案 0 :(得分:0)

好吧,您只需传递所需的函数即可,而不是print。使用lambda进行简单处理:

mapM_ (\tool -> ...) resp

或作为单独的IO操作:

doSomethingWithTool :: Tool -> IO ()
doSomethingWithTool tool = do
  ...
  return ()

然后

mapM_ doSomethingWithTool resp