如何在SWI-Prolog中使用谓词转置?

时间:2014-10-21 00:21:28

标签: prolog swi-prolog

大家好我想在SWI-Prolog中使用谓词transpose(Matrix0, Matrix),当Matrix0Matrix是列表列表时,它们保持不变,并且每个列的“列”都是“行”另一个。问题是当我将:- ensure_loaded(library(clpfd)).添加到我的源文件并尝试使用它时,我得到了这个

%    library(occurs) compiled into occurs 0.00 sec, 14 clauses
%   library(apply_macros) compiled into apply_macros 0.00 sec, 44 clauses
%   library(assoc) compiled into assoc 0.00 sec, 103 clauses
ERROR: /Users/Benjamin/Documents/prologworkspace/test.pl:27:
    import/1: No permission to import clpfd:transpose/2 into user (already imported from ugraphs)
%  library(clpfd) compiled into clpfd 0.08 sec, 1,372 clauses
% test compiled 0.08 sec, 1,388 clauses
true.

我尝试这个时得到了false

?- transpose([['_','_'],['_','_']], X).
false.

有什么建议吗?谢谢。

1 个答案:

答案 0 :(得分:3)

  

import / 1:无权将clpfd:transpose / 2导入用户(已从ugraph中导入)

你有一个名字冲突。这对clpfd:transpose/2本身来说不是问题。

要不导入模块的所有导出谓词,请使用

:- use_module(library(clpfd), []).

然后你需要调用clpfd:transpose/2,包括名称空间。

C.f。