Пролог SWI, CLP (R): Могу ли я связать ограничение с переменной? - PullRequest
1 голос
/ 26 июня 2019

Или можно ли привязать переменную ограничения к другой переменной (см. Пример ниже)?

?- use_module(library(clpr)).
true.

% this works
?- {X >= 5.0, X =< 10.0}, minimize(X).
X = 5.0 .

% but I do not know why this fails
?- C = {X >= 5.0, X =< 10.0}, minimize(X).
false.

% and this also fails consequently
?- C = {X >= 5.0, X =< 10.0}, term_variables(C, [Var]), minimize(Var).
false.

1 Ответ

2 голосов
/ 26 июня 2019

У Пролога нет «назначения», так что будьте осторожны, обычно вы должны сначала понять его специфическую модель программирования.В этом конкретном случае вы можете «вызывать» свои привязки, давая библиотеке (clpr) возможность выполнять свои сложные обязанности:

?- use_module(library(clpr)).
true.

?- {X >= 5.0, X =< 10.0}, minimize(X).
X = 5.0 ;
false.

?- C = {X >= 5.0, X =< 10.0}, C, minimize(X).
C = {5.0>=5.0, 5.0=<10.0},
X = 5.0 ;
false.

, но я думаю, что систематическое применение этого трюка к вашей модели ограничений может привести кв хрупком приложении.

...