2016-06-01 3 views
2

나는 나를 ($)/2 메타 술어의 벌금을 사용할 수있는 프롤로그 소스 파일을 가지고 있지만, 다음과 같이 내가 모듈로 변환 할 때, 나는 $ 작동하는 데 사용되는 곳 구문 오류를 얻을 :SWI 프롤로그 FUNC 팩

:- module('mymodule', [mypred1/2, mypred2/3, ($)/2]). 
:- use_module(library(func)). 

reexport도 사용해 보았습니다.

따라서 X is mypred1$"something"과 같은 작업을 수행하면 구문 오류가 발생합니다. 그러나 소스 파일에서 :- module(... 행을 제거하면 문제가 해결됩니다.

$을 모듈 내에서 올바르게 작동 시키려면 어떻게합니까?

답변

2

사용자 삽입 연산자 ($)/2을 사용하고 모듈 "경계"를 도입 할 때 문제가 나타납니다.

Prolog lambdas을 구현할 때 Ulrich Neumerkel도 같은 문제에 직면했습니다! SWI 특정 수정의 경우, 체크 아웃이 시작 lambda.pl — 연구 : 그것은

 
:- module(lambda, [(^)/3, (^)/4, (^)/5, (^)/6, (^)/7, (^)/8, (^)/9, (^)/10, 
        (\)/1, (\)/2, (\)/3, (\)/4, (\)/5, (\)/6, (\)/7, (\)/8, 
        (+\)/2, (+\)/3, (+\)/4, (+\)/5, (+\)/6, (+\)/7, (+\)/8, (+\)/9, 
        op(201,xfx,+\)]). 

의 그!

또한 SWI 설명서 module/2을 읽고 잘하겠습니다!

관련 문제