gpt4 book ai didi

haskell - 如何为 haskell 使用 mongoDB 绑定(bind)

转载 作者:可可西里 更新时间:2023-11-01 09:20:05 26 4
gpt4 key购买 nike

我是 Haskell 的新手,但我觉得我对所有方面都有不错的理解。

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

如果您查看此处的代码:http://github.com/srp/mongoDB/blob/master/Database/MongoDB.hs

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

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

然而,所有实际与数据库交互的方法都采用简单的Connection 作为参数。例如:

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

我认为这里有一些基本的东西我不理解,也许 IO 与它作为 IO Monad 的一部分有关?我真的很无能,想知道是否有人可以为我阐明这一点。

如何将 IO 连接诱导到 mongoDB 绑定(bind)中的连接?

感谢您的任何意见。

最佳答案

I think there is something fundamental I'm not understanding here

是的,没错。你只是错过了 Haskell 如何区分有副作用的代码和纯代码。要使用以 IO 类型结尾的代码,您可以使用 do-notation。例如

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

<- 是运行副作用代码并返回结果的“绑定(bind)”。在这种情况下,类型为“Connection”的值。

阅读有关 Haskell IO 的内容,例如真实世界的 Haskell,http://book.realworldhaskell.org/read/io.html

确保也阅读黑线鳕,http://hackage.haskell.org/packages/archive/mongoDB/0.2/doc/html/Database-MongoDB.html

关于haskell - 如何为 haskell 使用 mongoDB 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2348880/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com