13、Prolog编程:数据读取与处理的深入探索

Prolog编程:数据读取与处理的深入探索

1. Prolog意外行为的分析方法

在Prolog编程中,有时会遇到程序出现意外行为的情况。使用Prolog解释器内置的跟踪工具可能会让人感到困惑,因为我们只能看到当前目标,无法同时查看前面的目标或用于满足前面目标的子句指针。一个更好的方法是在运行跟踪时在纸上进行手动计算,这样能更清楚地了解跟踪信息所传达的内容。

例如,我们可以尝试手动计算某些查询,然后使用Prolog调试器跟踪相同的计算过程,并比较结果。同时,还可以检查调试器是否会显示指示每个查询涉及哪些子句的编号。

2. 尾递归优化相关知识

尾递归优化起源于Scheme语言,后来也应用到了Common Lisp和Prolog中。Warren在1986年讨论了尾递归优化的实现,并指出 append 是尾递归的。如果你想了解更多关于通过尾递归表达迭代的艺术,可以参考Abelson和Sussman在1985年的相关研究。

3. Prolog解释器工作原理的资料

若要详细了解Prolog解释器的工作原理,可以依次阅读Hogger(1984:181 - 221)、Maier和Warren(1988)的相关内容,以及Campbell(1984,文章集合)和A¨ıt–Kaci(1991)的研究。

4. 自由格式输入问题

通常,Prolog的输入例程 read/1 要求所有数据都按照Prolog语法编写,但在商业软件的实际应用中,这是不现实的。我们可以让Prolog读取任何格式的数据,甚至可以编写一个程序来读取Lotus .W

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值