-
0 votesanswersviews
整数平方根在SWI-Prolog和YAP中有效,但在GNU-Prolog中没有
我通过将其添加到swipl,gprolog和yap中的用户文件来测试以下代码: isqrt(N, _) :- N < 0, !, fail. isqrt(N, N) :- N < 2. isqrt(N, R) :- X is N, Y is (N // 2), isqrt(N, X, Y, R). isqrt(_, X, Y, X) :- ... -
3 votesanswersviews
制作适用于GNU和SWI的Prolog代码
我意识到这将有限制,但有没有合理的方法在Prolog代码中放入条件指令,以便它在GNU或SWI中合理地工作?我在考虑至少最简单的情况,其中内置谓词如SWI中的 sumlist 和GNU中的 sum_list 在拼写中彼此不匹配 . 或者SWI有 assert 但GNU没有 . 所以有这样的东西会很好: :- if($SWI). SWI version of stuff :- else. GNU v... -
4 votesanswersviews
SWI Prolog与GNU Prolog - SWI下的CLP(FD)问题
我在Prolog中写了一个快速谓词,尝试了CLP(FD)及其解决方程组的能力 . problem(A, B) :- A-B #= 320, A #= 21*B. 当我在SWI中调用它时,我得到: ?- problem(A,B). 320+B#=A, 21*B#=A. 在GNU中,我得到了正确答案: | ?- problem(A,B). A = 336 B = 16 这里发生... -
20 votesanswersviews
在GNU-Prolog中,我可以'catch'一个linux信号吗?
有没有办法在GNU Prolog中“陷阱”(例如“捕获”)操作系统信号? (我正在使用Ubuntu / Linux,最新的gprolog) . 我想很久以前我在WAMCC中使用过这种方法,然后才变成GNU Prolog: :- catch(Long_Running_Goal,signal(2),write('program interrupted')) 但是,如果我使用(重复,失败)无限循环测试...