Я не понимаю, почему следующий код не компилируется; она производит put_attr/3: Uninstantiated argument expected, found 2 (1-st argument)
ошибку:Ошибка компиляции при смешивании CLP (FD) и конструкции if-then-else
:- use_module(library(clpfd)).
test(X, Y) :-
( X = 1
-> Y #= 2
; Y = 3
).
Следующий код также не компилируется:
test(X, Y) :-
( X = 1
-> Y = 2
; Y #= 3
).
Я не понимаю, почему это так. Замена #=
с простым объединением =
делает его компиляцию, но я не понимаю, почему это не будет компилировать, учитывая, что этот предикат:
test(X, Y) :-
( X = 1
-> Y #= 2*_
; Y = 3
).
компилируется!
Меньший пример: 't (Y): - (Y # = 2; Y = 1) .' – false
@Fatalize, Что значит, что он не компилируется, я пробовал все и отлично работал. – coder
@coder Я имею в виду, что когда я 'make.', я получаю ошибку, которую я написал в своем сообщении. Судя по комментарию @ false, я предполагаю, что у него есть такая же проблема. – Fatalize