【发布时间】:2013-07-26 21:25:36
【问题描述】:
我正在尝试使用 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
【问题讨论】:
-
尝试在您的 lambda 中给出
val和tot类型签名,如下所示:(\tot val -> (val :: Int) + (tot :: Int))。 -
我终于明白了!事实证明 MySQL-simple 有一个非常相似的 API。这是匿名函数应该是
(\tot (Only val) -> return $ (val::Int) + tot )
标签: sqlite haskell fold sqlite-simple