我的一些Prolog程序可以利用有点有点,如果我可以替换所有(is)/2
为基础的整数算术的clpfd对应。SICStus Prolog 4.3.2:clpfd没有权力?
所以我想力量...与... clpfd,所以我可以用的东西clpfd-Y :)
考虑以下五个Prolog的处理器,支持clpfd更换X is 10^3
:
GNU Prolog 1.4.4
?- X #= 10^3. uncaught exception: error(type_error(fd_evaluable,(^)/2),(#=)/2) ?- X #= 10**3. X = 1000.
SWI-Prolog 7.3.14
?- use_module(library(clpfd)). % autoload would be even more awesome true. ?- X #= 10^3. X = 1000. ?- X #= 10**3. ERROR: Domain error: `clpfd_expression' expected, found `10**3'
B-Prolog 8.1
?- X #= 10^3. X #= 10^3. *** error(illegal_array_access,10^3) ?- X #= 10**3. X = 1000.
SICStus Prolog 4.3.2
?- use_module(library(clpfd)). true. ?- X #= 10^3. ! Existence error in (^)/2 ! constraint user:wi(^)/2 does not exist ! goal: 10^3 ?- X #= 10**3. ! Existence error in user:(**)/2 ! constraint user:(**)/2 does not exist ! goal: 10**3
想法/提示/建议,请。 我能做什么?或许使用一些clpfd兼容性层?
预先感谢您!
更难处理的数字范围差异!参见例如Markus Triska [论文](http://www.metalevel.at/drt.pdf) – CapelliC
@CapelliC。我没有得到那个......你指的是什么?请指出我的论文中的某些页面......或者您可能指的是以下限制之一?多个求解器如何能够优雅地进行交互?或者像'length/2'这样的内置插件如何不能处理FD变量,因为实现还没有赶上? – repeat
@CapelliC。快乐的圣诞节,顺便说一句!上升和发光的主已经来到了地球...... – repeat