我正在移植一个解析器 + SQLite 数据导入器作为我在 Haskell 中的第一个项目,我需要一些帮助来了解一个人应该如何做单子。我将 parsec 用于解析部分,然后使用转换函数来排除 SQLite 查询,这些查询将完成将数据插入数据库的工作。
现在,由于它使用了 parsec 解析器,结果数据的类型是:
IO (Either ParseError [(String, [SqlValue])])
这是数据样本
Right ("INSERT OR REPLACE INTO utterances
(id,name,filelength,updated_at,checksum_algorithm, checksum) VALUES (ifnull(NULL,
(select id from utterances where name = ?)) , ? ,?, datetime(),'MD5',?);",[SqlString
"testdata/testdata.TextGrid",SqlString "testdata/testdata.TextGrid",SqlDouble
1.0,SqlString "FAKE"])
现在,我需要在单个事务中运行查询,但是当数据位于 IO (Either xa)) 包中时,我该怎么做呢?
就像我说的,我对 Haskell 很陌生,所以我很感谢我能在这里得到的所有帮助