1

我正在尝试使用 Haskell 的 sqlite-simple 包中的 fold_ 函数,但我该如何调用它呢?我将它放在 main 的“do block”中,但我的任何尝试都无法编译。我能够让 query_ 函数工作,但现在我需要一次检索一个值。例如,我正在尝试对数据库中的整数列表求和。

main :: IO ()
main = do
    conn <- open "C:\\project.DB"
    theSum <- fold_ conn "SELECT rserial from conitr1" 0 (\tot val -> val + tot )
    close conn

我知道它正在执行 IO 操作,并且我可能需要在某处指定类型,但我尝试的任何方法似乎都不起作用。api文档在这里http://hackage.haskell.org/packages/archive/sqlite-simple/0.4.2.0/doc/html/Database-SQLite-Simple.html#v:fold

4

1 回答 1

1
main :: IO ()
main = do
    conn <- open "C:\\project.DB"
    theSum <- fold_ conn "SELECT rserial from conitr1" 0 (\tot (Only val) -> return $ (val::Int) + tot )
    close conn

我在这里找到了一个示例https://github.com/nurpax/db-bench/blob/master/haskell/Sqlite.hs#L24并且它的工作原理相同!阅读类型签名是最好的起点,但有时还不够。

于 2013-07-26T23:34:50.683 回答