Jan的这个答案展示了Prolog中元解释器最简单的实现之一:
solve(true) :- !.
solve((A,B)) :- !, solve(A), solve(B).
solve(H) :- clause(H,B), solve(B).我想扩展这个解释器,以便它可以调用内置程序。普通的不能处理像solve(member(X, [1,2,3,4]))这样的调用。这有可能使用ISO谓词吗?如果没有,是否可以使用SWI谓词?
发布于 2017-10-03 08:33:27
Stackoverflow拒绝接受我的回答:)
给他们打个电话
编辑
例如
?- [user].
solve(true) :- !.
|: solve((A,B)) :- !, solve(A), solve(B).
|: solve(H) :- clause(H,B), solve(B).
|: solve(T) :- call(T).
|: ^Dtrue.
?- solve(member(X, [1,2,3,4])).
X = 1 ;
X = 2 ;
X = 3 ;
X = 4.唯一的补充:solve(T) :- call(T)。
https://stackoverflow.com/questions/46537856
复制相似问题