我在 vs code 的 prolog 中遇到错误,请检查
I am getting an error in prolog in vs code please check
这是代码:
dog(rottweiler).
cat(sphynx). dog(poodle).
dog(bulldog). cat(bengal).
dog(dobermann).
cat(himalayan). cat(singapura).
发现错误是:-
警告:dog/1 的子句不在源文件中
警告:c:/users/dell/desktop/prolog/dog:1 的早期定义
警告:当前谓词:cat/1
警告:使用 :- 不连续 dog/1。抑制这条消息
警告:c:/users/dell/desktop/prolog/dog:4:
警告:cat/1 的子句不在源文件中
警告:c:/users/dell/desktop/prolog/dog:2 的早期定义
警告:当前谓词:dog/1
警告:使用 :- 不连续 cat/1。以抑制此消息。
真
在 Prolog 中,一个 n 元谓词 p,对于 n≥0,由 过程 定义,它由一个或多个 子句 组成,其结论是 p[=35= 形式的术语](a1, ..., an),其中每个 a_i 是一个参数。属于同一过程的子句应按顺序声明,连续。
当两个或多个不同过程的子句在源代码中交错出现时,编译器会生成您收到的警告消息。要抑制此类消息,您可以使用 :- discontiguous predicate/arity
.
形式的指令
例如:
:- discontiguous dog/1.
:- discontiguous cat/1.
dog(rottweiler).
cat(sphynx).
dog(poodle).
dog(bulldog).
cat(bengal).
dog(dobermann).
cat(himalayan).
cat(singapura).
但是请注意,最好的选择是遵循 Prolog 约定 并按如下方式修改您的代码:
% clauses of the first procedure
dog(rottweiler).
dog(poodle).
dog(bulldog).
dog(dobermann).
% clauses of the second procedure
cat(sphynx).
cat(bengal).
cat(himalayan).
cat(singapura).
这是代码:
dog(rottweiler).
cat(sphynx). dog(poodle).
dog(bulldog). cat(bengal).
dog(dobermann).
cat(himalayan). cat(singapura).
发现错误是:- 警告:dog/1 的子句不在源文件中 警告:c:/users/dell/desktop/prolog/dog:1 的早期定义 警告:当前谓词:cat/1 警告:使用 :- 不连续 dog/1。抑制这条消息 警告:c:/users/dell/desktop/prolog/dog:4: 警告:cat/1 的子句不在源文件中 警告:c:/users/dell/desktop/prolog/dog:2 的早期定义 警告:当前谓词:dog/1 警告:使用 :- 不连续 cat/1。以抑制此消息。 真
在 Prolog 中,一个 n 元谓词 p,对于 n≥0,由 过程 定义,它由一个或多个 子句 组成,其结论是 p[=35= 形式的术语](a1, ..., an),其中每个 a_i 是一个参数。属于同一过程的子句应按顺序声明,连续。
当两个或多个不同过程的子句在源代码中交错出现时,编译器会生成您收到的警告消息。要抑制此类消息,您可以使用 :- discontiguous predicate/arity
.
例如:
:- discontiguous dog/1.
:- discontiguous cat/1.
dog(rottweiler).
cat(sphynx).
dog(poodle).
dog(bulldog).
cat(bengal).
dog(dobermann).
cat(himalayan).
cat(singapura).
但是请注意,最好的选择是遵循 Prolog 约定 并按如下方式修改您的代码:
% clauses of the first procedure
dog(rottweiler).
dog(poodle).
dog(bulldog).
dog(dobermann).
% clauses of the second procedure
cat(sphynx).
cat(bengal).
cat(himalayan).
cat(singapura).