我正在编写一个Prolog元解释器,它需要获得我定义的谓词的源代码。我原以为使用expand_term/2可以做到这一点,但它返回了递归数据结构,而不是谓词的源代码:
:- initialization(main).
main :- expand_term(quadratic_formula(X,A,B,C) :- Z,Z),writeln(Z).
%This prints @(S_1,[S_1=(quadratic_formula(_3068,_3090,_3112,_3134):-S_1)]) instead of the predicate's source code.
quadratic_formula(X,A,B,C) :-
X is -B + sqrt(B*B-4*A*C)/2*A;
X is -B - sqrt(B*B-4*A*C)/2*A.有没有其他方法可以获得用户定义谓词的源代码?
发布于 2017-10-06 21:46:39
您的意思是获得与listing/1生成的源代码相同的源代码?如果是这种情况,您可以简单地将listing/1与_output_to/2结合使用:
with_output_to(atom(SourceCode), listing(quadratic_formula)).https://stackoverflow.com/questions/46556721
复制相似问题