2010-02-27 2 views
3

저는 하스켈에서 새롭게 생겼습니다.하지만 나는 완전히 이해하고있는 것처럼 느낍니다.howto는 haskell에 mongoDB 바인딩을 사용합니다.

저는 현재 haskell에 대한 비공식 mongoDB 바인딩을 사용하려고합니다. 여기에 코드를 보면

:이 방법을 볼 수 있듯이 http://github.com/srp/mongoDB/blob/master/Database/MongoDB.hs

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

/가 IO 연결로 확인 반환합니다.

그러나 실제로 데이터베이스와 상호 작용하는 모든 방법은 단지 연결을 인수로 취합니다. 예 :

여기 내가 이해하지 못하는 뭔가 근본적인 것이 있다고 생각합니다. 입출력은 IO Monad의 일부분 일 수 있습니까? 나는 정말로 꽤 우둔 하 고 누군가가 나를 위해 이것에 관해 흘릴 빛이 있는지 궁금하게 생각하고 있었다.

mongoDB 바인딩의 IO 연결을 어떻게 연결하면됩니까?

입력하신 사항을 알려 주셔서 감사합니다.

+0

너무 haddocks를 읽을 수 있는지 확인 https://github.com/TonyGen/mongoDB-haskell/blob/master/doc/Example.hs을 예를 참조 – mb21

답변

10

은 내가

예, 그렇습니다 여기 이해하지 않고있어 근본적인 무언가가 있다고 생각합니다. 하스켈이 순수 코드와 부작용이있는 코드를 구별하는 방법을 놓친 것입니다. IO 유형으로 끝나는 코드를 사용하려면 do 표기법을 사용합니다. 예 :

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

이 - 코드를 초래 측면을 실행하는 "바인드", 그리고 결과를 반환합니다. 이 경우 "Connection"유형의 값.

예를 들어 하스켈 IO에서 읽습니다. 실제 세계 하스켈, http://book.realworldhaskell.org/read/io.html

, 또한 http://hackage.haskell.org/packages/archive/mongoDB/0.2/doc/html/Database-MongoDB.html

관련 문제