2011-11-30 45 views
2

我知道我可以通過使用標準的申報出口謂詞模塊:使用導出謂詞: - 模塊

:- module(my_test, [hello/1]). 

hello(a). 
hello(b). 

但是想知道有另一種方式我可以導出謂詞你好模塊my_test?在下面的例子中,我需要填寫什麼代碼,以使my_export指令爲我執行此操作?

:- module(my_test, []). 

hello(a). 
hello(b). 
:- my_export(hello/1). 

我不能完全弄清楚import/export但這些都是唯一的真正的方法,我可以拿出。

+0

你能告訴我們你爲什麼要這樣做的原因嗎?你很可能會依賴於一些內部的假設,從發佈到發佈都很容易改變。 – false

+0

我想編寫一個系統:term_expansion宏,它可以改變規則的名稱和形式。例如一個將hello(a)變成my_hello(a,testcase123)的宏,那麼我想爲當前模塊導出這個。理想情況下,system:term_expansion會調用這個「導出」函數。 – DaveEdelstein

回答

1

只需用

:- export(hello/1). 

應該做的伎倆。

+0

導出必須被稱爲指令嗎?你認爲我可以在system:term_expansion期間調用導出嗎? – DaveEdelstein

+0

我對SWI並不是很熟悉,但據我所知,模塊系統與ECLiPSe中使用的模塊系統類似。對於靜態謂詞,可以使用'export/1'作爲指令。對於動態生成的謂詞,一旦生成謂詞,就可以從代碼中調用'export/1'。 – twinterer