关于Prolog中非谓词的陈述性解释的一些问题
这个问题在这里已经有了答案:
我没有太多要补充@哈德马斯所说的(+1),但它会用更多的话来说,所以它不是一个评论。
首先,你在程序和声明之间看到了困难,但还有其他的方式来看待事物,许多事情都处在中间。 +
就是其中之一,因为它有一个大部分是陈述式的阅读,但是陈述性阅读不足的地方与它在机器上执行的地方有关。 但是所有的Prolog都是在一台机器上执行的,并不意味着你永远无法用声明来思考。 这不是一个全有或全无的命题。 所谓的extralogical或meta谓词setof/3
et。 人。 为您提供的结果不是严格意义上的一阶逻辑,但这并不意味着它们是程序性的,甚至不一定是以公开程序的方式实施的。 总之:宇宙中的“程序性”和“陈述性”有更多的东西,它并不总是被切割和干燥的,它们是哪一个。
其次,你坚持把条件逻辑看作固有的程序逻辑。 我认为这是对低级细节的固定。 是的,你可以写出大量红色剪辑,并且只承认程序性阅读,但是如果使用逻辑不是必须的,也不是从一个到另一个的滑坡。 你似乎专注于阅读“如果X,Y,否则Z”为“首先,你做X,如果成功,你做Y,或者如果失败,那么做Z.” 但是你不必在程序上阅读它,事实上你可能不应该这样做。 即使排序条件会影响性能,有时也会影响正确性,但您不需要让它为您抹去声明性阅读。 毕竟,在任何语言中,这都会在某种程度上是真实的,这要归功于暂停的问题以及我们在机器上执行程序的事实。 如果我们在Prolog中让我们的理解受到毒害,我们将永远无法摆脱它,或者意识到声明式编程的好处。 简而言之:如果/ then / else不需要被理解为固有的程序性。
总结一下:放松一下。 :)
链接地址: http://www.djcxy.com/p/66933.html上一篇: Some questions about declarative interpretation of not predicate in Prolog