![]() |
1
3
如果你使用 清洁的 数据的表示。 在这种情况下,这意味着你将完全类比你如何通过不同的 仿函数 ,还使用专用函数表示(模态) 变量 .
例如,让我们使用函数
我没有添加“catch all”子句,而是添加了以下子句来说明对模态变量的看法: % (negated) variable rewrite(n(v(V)), n(v(V))). rewrite(v(V), v(V)). 现在我们得到: ?- rewrite(e(v(4), v(7)), Z). Z = a(k(v(4), v(7)), k(n(v(4)), n(v(7)))).
请注意,我们当然必须使用
在这些公式和 瑕疵 您当前使用的表示。它被称为“违约”,正是因为它需要 违约 (“全部捕获”)案例,也因为考虑到这一点 有错误的 . 最好尽快摆脱这种表示,然后围绕干净的表示编写主要逻辑。 一个干净的表示对于一般性和效率都是很好的:Prolog系统的 参数索引 现在可以通过第一个参数的主函数很容易地将所有子句区分开来,这提高了在参数完全实例化的重要用例中(例如,在您发布的示例中)的性能。 |
![]() |
Sam · 如何在Swi Prolog中对元组列表排序 7 年前 |
|
davo · 序言:delete谓词如何提供列表的开头 7 年前 |
|
Zeph · 在Prolog中添加到列表列表 7 年前 |
|
Deeps · 在prolog中截断浮点数 7 年前 |
|
Anthony Gauthier · 分析不同规则中的规则体 7 年前 |
![]() |
quixote · 如何在swi prolog中删除命令历史记录 7 年前 |
|
Walker · Prolog比较列表[关闭] 7 年前 |
![]() |
user7303261 · 在prolog中运行main 7 年前 |
![]() |
MasterYork42 · Prolog逻辑难题不起作用? 7 年前 |