在prolog中访问程序列表
我在SWI Prolog中定义变量时遇到了一些奇怪(或者不是很奇怪)的问题。例如: 我想做如下事情:在prolog中访问程序列表,prolog,Prolog,我在SWI Prolog中定义变量时遇到了一些奇怪(或者不是很奇怪)的问题。例如: 我想做如下事情: :- initialization(main). main :- X = listing(main), write(X). 但它只是简单地打印“listing(main)”您正在使用X=listing(…)创建一个术语,稍后您将使用write打印该术语 您似乎想访问main的代码。您正在寻找的是: 条款(:头、体) 如果Head可以与子句Head统一,Body可以与相应的子句Body统一,
:- initialization(main).
main :-
X = listing(main),
write(X).
但它只是简单地打印“listing(main)”您正在使用
X=listing(…)
创建一个术语,稍后您将使用write打印该术语
您似乎想访问main的代码。您正在寻找的是:
条款(:头、体)
如果Head可以与子句Head统一,Body可以与相应的子句Body统一,则为True。提供关于回溯的替代条款。事实上,身体和原子是统一的
例如:
main :- clause(main, X), write(X).
?- main.
clause(main,_G2381),write(_G2381)
true.
也许,使用另一个临时谓词而不是main/0
?- with_output_to(atom(X), listing(pattern)), write(X).
gram:pattern(A, B, C) :-
dig(A, B, C).
gram:pattern(A+C, B, E) :-
ten(A, B, D),
dig(C, D, E).
...
需要截图吗?编辑:哦,我忘了加写(X)。:pmain:-X=列表(主)。看,这很酷,但对我没有帮助。。只需要将代码列表(main)的结果存储到变量X中。现在X包含了输出。我仍然无法理解您想要什么。