我写这个谓词在序言:警告在序言
list([]).
list([X|L]) :- list(L).
它工作得很好,但我得到了这样的警告:
**Warning: /Users/hw6.pl:2:
Singleton variables: [X]** %
我能做些什么来避免呢?
我写这个谓词在序言:警告在序言
list([]).
list([X|L]) :- list(L).
它工作得很好,但我得到了这样的警告:
**Warning: /Users/hw6.pl:2:
Singleton variables: [X]** %
我能做些什么来避免呢?
该警告告诉您在谓词列表的该子句(本例中为第二个子句)中只有一次使用该变量。
它为什么会警告你?因为拼写错误的变量名称往往比你经常更频繁。当你拼错一个变量时产生的代码也是一个有效的序言程序,所以如果它不警告你的话,调试将会很痛苦。
如果您不打算使用该变量(X),则可以改为使用匿名变量。 要使用匿名变量,您必须使用_作为术语而不是变量名称。
在您的例子那就是:
list([]).
list([_|L]) :- list(L).
Gusbro是完全正确的。当你只使用一次变量时,你会得到一个单身变量。你的程序在语法上仍然是正确的,但是prolog认为你输入代码时犯了错误。如果给出任何答案,则下划线变量将始终统一为真。