Карта HaskellM_ в другой формат - PullRequest
0 голосов
/ 15 ноября 2018

Хотя у меня есть ощущение, что я прогрессирую в Хаскеле, я все еще не на сто процентов чувствую себя комфортно с контекстами.Возьмите код здесь:

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 меня немного ослепляет и иногда отвлекает.Думаю, что это снова ...

1 Ответ

0 голосов
/ 15 ноября 2018

Ну, вы просто передаете нужную функцию вместо print. Либо с помощью лямбды, для простых вещей:

mapM_ (\tool -> ...) resp

или как отдельное действие ввода-вывода:

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

, а затем

mapM_ doSomethingWithTool resp
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...