그래서 이번 주에는 Prolog의 확장 중 하나 인 Logtalk을 설치하는 것으로 구성되었습니다. 이 경우에는 Prolog SWI를 사용하고 있으며 약간의 문제가 발생했습니다. Logtalk을 사용하여 내 프로젝트에 실제로 문의하는 방법을 모르겠습니다. Logtalk이 코드 자체를 이해하기 위해 제공하는 예제를 살펴 보았습니다. 그렇게함으로써 코드를로드하고 완벽하게 실행할 수있었습니다. Logtalk에서 파일을로드 할 때 실제로 진행되는 작업과 내 프로젝트를로드하는 방법을 이해할 수 없습니다.Prolog SWI : Logtalk, 내 프로젝트 파일을 어떻게로드합니까?
"hello_world"예제를 토론의 요점으로 삼을 것입니다. hello_world라는 파일은 Logtalk 파일의 examples 폴더에 있습니다. 아직 그렇게 같이 상담을 :
| ?- logtalk_load(hello_world(loader)).
우선 내가 "그 펑터이다"라고 생각, 그것은 추적을 사용하여 무엇을하고 있었는지보고, 나는 그것이 라이브러리에서 호출되는되었으며 말했다되고 있다는 발견 어떻게하면 "hello_world"폴더를 연 다음 "로더"파일을 열 었는지 예제 폴더로 이동하는 방법을 설명합니다. 그 후 정상적인 컴파일이 발생했습니다.
나는 도서관을보고 무슨 일이 있었는지 알 수 없었다. 또한 Logtalk에서 사용자가 만든 프로젝트를로드하는 실제 경로가 될 수 없다고 생각했습니다. SWI로도이를 수행하는 방법을 묻는 또 다른 게시물이 있었지만 문제를 파악하기 위해 어떤 응답도 없었으며 보이지 않았습니다.
이제 내가 명확하게 말하면서 "consult ('...')를 사용할 수 있습니다." 명령을 잘 사용하면 "consult"를 사용하여 프로젝트를 열 수도 있습니다. 그러나 이렇게하면 logtalk 콘솔은 logtalk 확장을 사용하지 않는 것처럼 보이므로 바닐라 프롤로그입니다. Logtalk을 설치하기 위해 Windows 용 설치 프로그램을 사용했으며, 내가 함께 제공되는 예제를 살펴봤을 때 작동한다는 것을 알고 있습니다. 내가 이해
logtalk_load/1.
logtalk_load/2.
:
내가 튜토리얼을 찾기 위해 노력했지만이 Logtalk 아무것도의 많은 부분을 찾기 매우 어렵습니다, 내가 찾은 가장로드에이 문서는 프로젝트 내에서입니다 과 같이 :
logtalk_load(file). % Top level loading
logtalk_load(folder(file). % Bottom level loading
그래서 거대한 수동 부하 각 시간을 절약하기 위해 나는 (Logtalk에 대한 예제가하는 일입니다) 내 프로젝트의 다른 구성 요소를로드하는 로더 파일을 가질 것이다. 이 비트는 나에게 의미가있다. 내 생각에, 로더 파일에 어떻게 접근하는지는 알 수 없다.
정확하게 이해했는지 여부는 아직 알 수 없지만 올바르게 이해하고 있더라도 내 프로젝트를로드하는 방법에 대해서는 여전히 분실 상태입니다. 당신이 줄 수있는 도움을 주셔서 감사합니다. 예제에서 아주 빨리 배울 수있는 예제를 줄 수 있다면요.
조금 UPDATE
내 프로그램 실행에 대한 logtalk 콘솔을 사용하여 경우 당신은 질문, 그리고 내가 제공 [시작> 프로그램은 "QUICK_START"파일 중에 언급 된 하나를 사용하고, 나는 > Logtalk> "Logtalk - Prolog-SWI (콘솔)"] Logtalk 애드온이 제대로 동작하는지 테스트 한 결과 객체를 사용하고 있기 때문에 "birds"예제를 테스트 해 보았습니다. Logtalk_load/2 functor를 사용할 때 모든 것이 잘 작동합니다.
나는 지금까지 주어진 피드백을 감안할 때 라이브러리 경로가 무엇을 언급했는지 살펴 보았다. logtalk로 파일을로드하는 방법. 지금까지와 같이 설정을 변경하지 않고 logtalk는 libpaths라고하는 프롤로그 파일을 포함하는 폴더를 참조합니다.기본적으로 예제가 어떻게 발견되는지는 파일을 어디서 가져올 지 부분적인 설명입니다. 그래서 "logtalk_load/2"라고 말하면 적어도이 파일에 가서 폴더가 어디에 있는지 묻습니다.
예제 폴더에 내 프로젝트 폴더를 이미 배치 했으므로 목록에 내 자신의 폴더를 추가하여 신속하게 문제를 이해하는 데 도움이되는 부분 방법 솔루션이 될 수 있는지 테스트했습니다. libpaths.pl 파일에 다음을 추가했습니다.
logtalk_library_path(my_project, examples('my_project/')).
% The path must end in a/so I have done so
그래서, 내 폴더 경로 선언있어, 내 폴더를 얻고, 로더 파일 내가 로더를 사용할 때 호출됩니다 것입니다. 내 자신의 lib 경로 폴더를 설정하지 않고, 일을하고 실제적인 학습을하기에 충분해야합니다. 그러나 슬프게도 아니, 내 조사가 실패하고 난 다음 반환 된 것 같다 내가보고 싶어하지 무엇
ERROR: Unhandled exception: existence_error(library,project_aim)
을, 내가 다시이 라이브러리 오류 사업입니다. 나는 어딘가에 내 프로젝트 폴더에 대한 참조가 누락되었지만 참조 할 필요가있는 곳을 모른다. 문제에 대한 추적을 실행하면 단순히 다음 있었다 도움이되지 않았다 발생합니다
Call: (17) logtalk_library_path(my_project, _G943) ? creep
Fail: (17) logtalk_library_path(my_project, _G943) ? creep
ERROR: Unhandled exception: existence_error(library,my_project)
통화가 실패, 나는 단순히 logtalk이 찾고있다 적 참조를 찾는 아니에요. 그리고 저는 이런 종류의 문제에 관해서는 초보자입니다. 저는 C#과 C++를 사용하여 시각 스튜디오에서 지난 2 년간 컴퓨터를 단 3 년 만에 프로그래밍하고 프로그래밍 해 왔습니다. 적어도이 문제에 관해 더 많은 빛을 보았습니다.이 정보를 제공하는 더 유용한 조언이 있습니까?
고마워, 이제 시작했다. 나는 한 가지 더 질문한다 : Daniel은 이미 설정에 한 줄 더있다는 것을 지적했다. lgt는 폴더 선언을 나타낸다. logtalk_library_path (프로젝트, '$ HOME/projects /'). 프로젝트 폴더를 만들고, $ HOME 부분이 선언되지 않은 변수라고 가정 해 보겠습니다.이 경로를 선언해야한다면 전체 경로를 선언해야하거나 기본 경로 인 logtalk을 사용할 수있는 적절한 방법이 있다고 가정 해 보겠습니다. 네가 말했듯이, 내가 설치하고있을 때 이미 알고 있니? 그냥 호기심, 알기 편리 할 것입니다. –
Windows의 경우 예 : SWI-Prolog 나 GNU Prolog를 백엔드 Prolog 컴파일러로 사용하면'home' 라이브러리가 이미 정의되어 있습니다 (다른 Prolog 컴파일러 중 일부는 환경 변수를 제대로 확장하지 못합니다). 따라서'logtalk_library_path (projects, '$ HOME/projects /')'예제 에서처럼'home'을 루트로 갖는 다른 라이브러리를 정의 할 수 있습니다. '% HOME %'을 Windows 환경 변수로 정의 할 수도 있습니다. –
'logtalk_library_path (projects, home ('projects /'))'를 사용할 수도 있습니다. –