2

作为开始使用 core.logic 的一种方式,我决定解决“九十九个 Prolog 问题”......

https://github.com/rodnaph/99-core-logic-problems

但是在遇到几个问题之后,根据我目前的理解,感觉 core.logic 并不是解决这些问题的正确方法(因为它们只需要一个答案)。

我可能误解了关系方法,但我是在找错树了吗?我应该只使用 Prolog 吗?

干杯。

4

1 回答 1

2

最初的问题是针对 Prolog 的,而在 Prolog 中,关系方法是您所拥有的唯一方法。这些问题中的大多数实际上是变相的函数式编程,并且不使用回溯,因此在 Clojure 中使用它们不会是惯用core.logic的。

也就是说,Prolog 的巧妙之处之一是您经常可以向后运行它们(主要是简单的),以生成所有可能的解决方案。例如,您可以通过append向后运行找到将列表分成两部分的所有方法。

于 2013-02-10T20:26:35.860 回答