如果我们宣布这样的事实:
dnp_padrão(1, plural, mos).
dnp_padrão(2, plural, 'is').
dnp_padrão(3, plural, m).
dnp_padrão(1, singular, '').
dnp_padrão(2, singular, s).
dnp_padrão(3, singular, '').问prolog:
?- dnp_padrão(1, singular, X).
X = ''.好的,只有一个事实与这个查询相统一,但是如果我问:
?- dnp_padrão(1, plural, X).
X = mos ;
false.为什么SWI统一试图寻找另一个事实,如果只有一个事实是统一的?为什么在前一个问题中没有呢?在这种情况下,统一是如何运作的呢?
发布于 2022-07-13 12:19:49
从这个文档
索引
这意味着您的两个查询- dnp_padrão(1, ...) -过滤到以下两个事实:
dnp_padrão(1, plural, mos).
dnp_padrão(1, singular, '').查询?- dnp_padrão(1, singular, X).发现第一个不匹配,因为plural参数,显示第二个,并知道没有更多-没有选择点。
查询?- dnp_padrão(1, plural, X).找到第一个查询,将其显示给您,并留下一个选择点,因为它还没有查看更多的事实。
https://stackoverflow.com/questions/72957862
复制相似问题