Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Prolog 子句在源文件中不在一起警告_Prolog_Compiler Warnings - Fatal编程技术网

Prolog 子句在源文件中不在一起警告

Prolog 子句在源文件中不在一起警告,prolog,compiler-warnings,Prolog,Compiler Warnings,所以基本上我有一个解释和规则,不知怎的,编译器说这些子句不在源文件中,我不明白为什么,就像程序写得很好一样,我想 节目: forne(f001,zé_dos_parafusos,fabricante,carregado). forne(f002,branquinho,fabricante,lisboa). forne(f003,lar_ideal,fabricante,lisboa). tipo_prod(p001,parafuso). tipo_prod(p002,broca). tipo_

所以基本上我有一个解释和规则,不知怎的,编译器说这些子句不在源文件中,我不明白为什么,就像程序写得很好一样,我想

节目:

forne(f001,zé_dos_parafusos,fabricante,carregado).
forne(f002,branquinho,fabricante,lisboa).
forne(f003,lar_ideal,fabricante,lisboa).

tipo_prod(p001,parafuso).
tipo_prod(p002,broca).
tipo_prod(p003,lavatório).
tipo_prod(p004,sabonete).
tipo_prod(p005,detergente).

og_prod(f001,p001,30000).
og_prod(f001,p002,500).
og_prod(f002,p003,25).
og_prod(f002,p004,50000).
og_prod(f002,p005,50000).
og_prod(f003,p001,1000).
og_prod(f003,p002,50).
og_prod(f003,p003,5).
og_prod(f003,p005,500).

tipo_prod(X, _) :- og_prod(X, _, _).

og_prod(X, Y, _) :- tipo_prod(Y, _), forne(X, _, _, _).
警告:

Clauses of tipo_prod/2 are not together in the source-file
Clauses of og_prod/3 are not together in the source-file 
Earlier definition at ex1 cap7.pl:11
          Current predicate: tipo_prod/2
          Use :- discontiguous og_prod/3. to suppress this message

如果有人能向我解释一下这个程序中的错误,我将不胜感激。

Prolog不在乎这些子句是事实还是规则——它们都只是子句(事实根本没有“:-…”部分;但你也可以认为它们有“
:-true”

tipo_prod/2和og_prod/3的规则与这些谓词的事实是分开的。所以,你会得到一个警告,因为这通常是打字错误的指示


顺便说一句,你的代码可能不会做你认为它在做的事情。我的猜测是,你想为规则tipo_prod/2和og_prod/3使用不同的名称,这与事实的名称不同。

这两条规则中的名称让我感到奇怪。你确定你想要tipo适用于任何产品吗?否则,按照顺序对子句进行重新排序问题是,我想在forne中关联一个参数,比如Lisboa,我想要一个与Lisboa关联的X,它是p001。但我找不到这两个信息之间的良好联系。