如何为haskell使用mongoDB绑定

时间:2010-02-27 20:37:57

标签: haskell mongodb

我对Haskell很新,但我觉得我对所有人都有一个很好的理解。

我目前正在尝试使用haskell的非官方mongoDB绑定。

如果你看一下这里的代码:http://github.com/srp/mongoDB/blob/master/Database/MongoDB.hs

connect :: HostName -> [ConnectOpt] -> IO Connection
connect = flip connectOnPort (Network.PortNumber 27017)

如您所见,此方法返回/解析为 IO连接

但是,实际上与数据库交互的所有方法都只使用简单的连接作为参数。例如:

disconnect :: Connection -> IO ()
disconnect = conClose

我认为这里有一些基本的东西我不理解,也许IO与IO Monad的一部分有关?我真的很无能为力,并且想知道是否有人有任何关于此事的光明。

如何在mongoDB绑定中同步到连接的IO连接?

感谢您提供的任何意见。

1 个答案:

答案 0 :(得分:10)

  

我认为有一些根本我不理解

是的,没错。您只是想知道Haskell如何区分具有纯代码副作用的代码。要使用以IO类型结尾的代码,请使用do-notation。 E.g。

main = do
   c <- connect "myhost" []
   print "connected!"
   disconnect c

&lt; - 是一个“绑定”,它运行副作用代码,并返回结果。在这种情况下,类型为“连接”。

在例如Haskell IO上阅读真实世界哈斯克尔,http://book.realworldhaskell.org/read/io.html

请务必阅读黑线鳕,http://hackage.haskell.org/packages/archive/mongoDB/0.2/doc/html/Database-MongoDB.html