在SWI-Prolog的,我使用的代码,例如在一个模块文本文件的开头:
:- module(foo, [bar/2]).
:- use_module(library(jack)).
我不想改变我的代码 。 我怎样才能neverthelss使用Eclipse的Prolog(*)。 有一些定义库module/2
在Eclipse Prolog的指令?
最好的祝福
(*) http://eclipseclp.org/
在SWI-Prolog的,我使用的代码,例如在一个模块文本文件的开头:
:- module(foo, [bar/2]).
:- use_module(library(jack)).
我不想改变我的代码 。 我怎样才能neverthelss使用Eclipse的Prolog(*)。 有一些定义库module/2
在Eclipse Prolog的指令?
最好的祝福
(*) http://eclipseclp.org/
下面的代码定义映射模块/ 2到模块/ 3指示一个宏:
:- export macro((:-)/1, translate_directive/2, [top_only]).
translate_directive(
(:- module(Module, Exports)),
(:- module(Module, Exports, [swi]))
).
编译为SWI编写的模块编译之前(或进口)这一点。 需要注意的是模块/ 3的第三个参数必须包含一个语言模块 ,对应于你的模块被写入方言。我用swi
这里,其他的选择将是quintus
, iso
或Eclipse的本地eclipse_language
。
你可以编译使用使用Logtalk与Eclipse中使用(或任何其他受支持的Prolog编译器,包括那些不提供模块系统)SWI-Prolog的模块系统的Prolog模块。
没有,只有module/1
和module/3
。
你一看到所有的名单什么可以在这里找到: http://eclipseclp.org/doc/bips/fullindex.html
SWI-Prolog的(一个人) module/2
指令可以在Eclipse中被替换module/1
+ export/1
的指令,你可能已经发现了。 还兼有SWI-Prolog的和Eclipse支持条件编译指令和dialect
标志。 这应该为您提供另一种选择(未测试)使用两个系统相同的Prolog文件:
:- if(current_prolog_flag(dialect, swi)).
:- module(foo, [p/1]).
:- elif(current_prolog_flag(dialect, eclipse)).
:- module(foo).
:- export(p/1).
:- else.
...
:- endif.