1

假设我有一个变量V,并且值V可以是 range 中的任何数字0..5。但是,某些值比其他值更受欢迎,因此它将帮助我将域指定V为有序序列。

我可以在 SICStus Prolog 中执行此操作吗?

例子:

% PSEUDOCODE
%
% 3 is more preferred than 4; 4 is more preferred than 2; and so on..
% So I would write something like this: 

V in {3,4,2,5,1,0},
getDomainAsList(V, List), % the predicate do not exist
% and the List would be: [3,4,2,5,1,0] and not [1,2,3,4,5]

我阅读了手册,但没有找到任何有用的东西。我可以通过自定义标签来解决问题(即,将 V 的域转换为列表,对其进行排序并将值分配给V),但我预计性能会更差。

4

2 回答 2

3

有一个手册页描述了这一点。

在此处查看labeling/2 的 value(Enum) 选项:

于 2013-06-07T08:04:28.050 回答
2

您可以按首选顺序拥有所有值的数组或列表。

然后在程序中使用数组索引,最后返回与索引对应的值。

于 2013-06-05T17:21:04.933 回答