편집 : 포럼 운영자 트롤이 종료하기 전에이를 빨리 알아 내려고합니다. (이들은 소급하여 내 게시물을 거슬러 올라가고 있습니다. 그들을 닫은 후). 문제는 드라이버 나 문서 중 하나입니다. 예제 코드는 실행할 때 동일한 문제가 있기 때문에.하스켈, MongoDB 드라이버, >> = 및 << =
나는 MongoDB와 함께 사용하는 관점에서 하스켈을 평가하려고하고있다. 이 드라이버 페이지의 예제를 사용하여 데이터베이스에 간단한 작업을 수행하는 간단한 프로그램을 작성하려고 시도했습니다 https://github.com/TonyGen/mongoDB-haskell. 나는 연결을 열고 심지어 데이터베이스에 삽입을 할 수 있습니다 (나는 DB를 체크했는데, 모든 것이 내부를 만든다). 제가 접속하고있는 문제는 일단 연결을 열고 뭔가를하면, 하스켈 프로그램이 인터프리터에게 "돌아와서"어떤 가치를 인쇄하거나 다른 것을 할 수 없다는 것입니다. 이것은 잘못된 단어 일지 모르지만 프로그램이 본질적으로 "잠겨"있다고 생각합니다.
잘 모르겠지만 "do"표기법에서 올바르게 끝내지 않는다고 생각합니다. 따라서 그냥 앉아 있다고 생각합니다. 드라이버 페이지의 예제를 보면 >> = 및 < < =과 같은 연산자를 사용하고 있음을 알 수 있습니다. 나는 "do"에서 끝내기 위해이 연산자들 중 하나 또는 둘 모두를 필요로하거나, 내가하고있는 일을 어떻게 든 끝내야한다는 것을 확신하지 못한다.
필자는 필요로하는 연산자 또는 연산자에 대한 명확한 예제와이를 사용하여 "do"를 완료하고 인터프리터로 돌아갈 수있는 방법을 알고 싶습니다. "finished"또는 어떤 값을 반환 할 수도 있습니다. 설명은 매우 기초적이고 실용적이며 평범한 말로 이루어져야하며, 사실에 관한 용어는 거의 순박하거나 어릴 적으로 말해야합니다. 설명은 그것이하는 일을하는 방식, 왜하는 일을하는 이유, 또는이 운영자 또는 운영자 내부에서 일어나는 일에 초점을 맞추어서는 안됩니다. 그것은 단지 "그런 것들"을하기 위해 그것을 사용하는 방법이어야합니다.
(명령이 보는 방법, 그것은 지시 무엇을 잘못 올바른) 예 :
"는 거꾸로 (
이<<=
)를 화살표처럼 보이는 그 일을보기를 그라고 년대 '뒤로 연산자를 화살표 . ' do에서 실행을 중단하고 싶을 때마다 모나드 세계에서 순수한 하스켈의 세계로 정보를 다시 찍고 싶을 때 우리는 그 연산자를 사용합니다. 어떻게 작동합니까? 쏘고 싶습니다. 다시 오른쪽에. 왼쪽, 당신 스틱 .... "에
내가 모나드가 무엇인지의 설명을하지 않으려는, 모나드를 사용하는 방법, 어떤 모나드 내부에 간다 , 모나드가 어떻게 작동하는지, 등등. 저는 여러 번 문학과상의했습니다.
또한 >> = 또는 < < =과 같은 연산자 또는 작동 방식, 수행중인 작업 등을 설명하고 싶지 않습니다. 필요한 경우 사용 방법에 대한 설명을 원합니다. , 단지 이론적 인 (또는 다른) 것들은 아닙니다.
나는이 웹 사이트 및 다른 문서를 이미 스캔했지만 원하는 형식 (위 설명 참조)으로 찾을 수 없습니다.
예제 코드
{-# LANGUAGE OverloadedStrings, ExtendedDefaultRules #-}
import Database.MongoDB
import Control.Monad.Trans (liftIO)
main = do
pipe <- runIOE $ connect (host "127.0.0.1")
e <- access pipe master "test" run
close pipe
print e
run = do
test_insert
-- missing something here? tried return "finished" and other things
test_insert = insertMany "blah" [ stuff... ]
@ JohnFMiller, 다른 사람들이 사용하는 언어에 대한 가정에주의해야합니다. 필자는 Python을 사용한 적이 한번도 없었으며 Erlang, Prolog, APL, J 등의 언어에서 많이 사용합니다. 그 외에도 귀하의 게시물에는 아무런 문제가 없으며 귀하가해야 할 말을 연구 할 것입니다. – user1992634
데이터베이스 항목을 (성공적으로) 수행 한 후에도 "반환"할 수 없습니다. 다른 조언? – user1992634
위의 대답에서 업데이트를 참조하십시오. –