混合CLP(FD)和if-then-else构造时的编译错误

时间:2016-09-29 13:41:04

标签: prolog swi-prolog clpfd

我不明白为什么以下代码无法编译;它会产生 fetchRequest.predicate = NSPredicate(format: "firstName == NIL") 错误:

put_attr/3: Uninstantiated argument expected, found 2 (1-st argument)

以下代码也无法编译:

:- use_module(library(clpfd)).

test(X, Y) :-
    (   X = 1
    ->  Y #= 2
    ;   Y = 3
    ).

我不明白为什么会这样。用简单的统一test(X, Y) :- ( X = 1 -> Y = 2 ; Y #= 3 ). 替换#=会使它编译,但我不明白为什么考虑到这个谓词不能编译:

=

会编译!

1 个答案:

答案 0 :(得分:2)

这是library(clpfd)目标扩展的错误。

this commit起,Markus Triska已修复此问题。