여기에는 한계가 있다는 것을 알고 있지만 Prolog 코드에 조건부 지시문을 넣어 합리적으로 GNU 또는 SWI에서 작동하도록 합법적 인 방법이 있습니까? 적어도 가장 단순한 경우를 생각하고 있는데, SWI의 sumlist
과 GNU의 sum_list
과 같은 내장 된 술어는 서로 맞춤법이 맞지 않습니다. 또는 SWI는 assert
이지만 GNU는 그렇지 않습니다. 단순히GNU 및 SWI에서 작동하는 Prolog 코드 만들기
:- if($SWI).
SWI version of stuff
:- else.
GNU version of stuff
:- endif.
또는 :
:- if(not_a_builtin(sumlist))
sumlist(L, S) :- sum_list(L, S).
:- endif.
또는 무엇을하지 그래서 뭔가를 가지고 좋은 것입니다. 조건부 지시어는 두 언어 모두에 있지만, 이런 종류의 일을 수행하는 데 필요한 조건을 제공하는 것만으로는 부족합니다. 아마 수동 검색이 나를 위해 나타나지 않은 것을 놓친 것 같습니다.
정확히 내가 무엇을 찾고 있었습니까. 감사. – lurker
나는 똑같은 대답을하고 나서 테스트를하기로 결심했고 나의 gprolog (소스에 의해 설치되지 않은)가 예외를 발생시켰다. '방언'은 갈 길입니다. – CapelliC
이 경우에도 제한 사항이 있습니다. 나에게 조금 미치게하는 Prolog 버전의 차이점은'format' 술어 또는 일반적으로 출력 형식을 지정하는 것입니다. ISO 프롤로그 출력 기능은 매우 불편하며 Prolog의 각 버전은 SWI와 GNU 사이에서 본 것과 같은 방향으로 분기되어있는 것처럼 보입니다. – lurker