我收到以下错误:
Singleton Variables: [Month]
运行我的文件后,在SWI-Prolog中。
我的格式为:
weather(Month, Day, Word1, Word2, Word3).
我有以下规则:
% Summer: True if Month is jun, jul, or aug
summer(Month) :-
weather(jun, _, _, _, _);
weather(jul, _, _, _, _);
weather(aug, _, _, _, _).
我是初学者,不知道为什么我会收到错误。 提前谢谢!
答案 0 :(得分:0)
在Prolog标识符中,以大写字母开头的标识符用作变量,因此在您的示例中,Month是一个变量,它在summer / 1谓词中从未被实例化(在谓词中从不使用),这就是为什么它会给您一个警告Singleton Variable的(不是错误)。
为了修复它,您可以编写一些实例化变量Month,如:
@Component
@Transactional (propagation = Propagation.REQUIRES_NEW)
public class OperationsProcessor
{
...............
public void createOperation(OperationsMessage message)
{
try
{
.............
.............
//this call throws exception.
opsRepo.create(operation,null);
}
catch (Exception e)
{
logger.error(e);
}
}
}
在上面的summer / 1定义中,因为你写了所有的案例,你可以看到没有必要使用事实summer(Month) :-
weather(jun, _, _, _, _),Month = jun;
weather(jul, _, _, _, _),Month = jul;
weather(aug, _, _, _, _),Month = aug.
,因为你可能宁愿写:
weather(Month, Day, Word1, Word2, Word3).
或者@false建议你可以添加表格的事实:
summer(Month) :-
Month = jun;
Month = jul;
Month = aug.