prolog中的警告

tec*_*ref 8 warnings prolog

我在prolog中写了这个谓词:

list([]).
list([X|L]) :- list(L).
Run Code Online (Sandbox Code Playgroud)

它运作良好,但我得到了这个警告:

    **Warning: /Users/hw6.pl:2:  
           Singleton variables: [X]** % 
Run Code Online (Sandbox Code Playgroud)

我能做些什么来避免它?

gus*_*bro 16

该警告告诉您在谓词列表的该子句中只有一次使用的变量(在本例中为第二个子句).

为什么它会警告你呢?因为你经常拼错变量名称.拼错变量时产生的代码也是一个有效的prolog程序,所以如果没有警告你,调试会很痛苦.

如果您不打算使用该变量(X),则可以使用匿名变量.要使用匿名变量,您必须使用_作为术语而不是变量名.

在您的示例中,它将是:

list([]).
list([_|L]) :- list(L).
Run Code Online (Sandbox Code Playgroud)