请在2024 Clojure 状态调查!分享你的想法。

欢迎!请参阅关于页面以了解更多关于这是如何工作的信息。

+1好评
core.logic

我需要定义谓词,我可以在以后(以及从其他命名空间)附加更多的子句(不仅仅是事实)。我在源代码中找不到这样的功能。由于宏的广泛使用,从外部将此类系统黑客到 core.logic 上是极其困难的,对我而言几乎是不可行的。

如果给我一个OK的大致方向,我也很想自己实现它。

3 个答案

0好评

评论者:werg

我实际上成功地附加了一个原型,它可以覆盖我想看到的基性行为:(链接:https://github.com/werg/herpderp/blob/master/src/herpderp/multo.clj

我在 defne 的元数据中用一个在 ref 中存储的集合来管理子句的动态更改。在通过 defclause 使用这个集合并之后,我使用 eval 来使用 defne 重新定义变量。

这可能不是很好,但我可以继续在这个基础上开发功能。

0好评

评论者:dnolen

我认为当前的实现无法真正支持这一点,我认为尝试黑掉当前实现不是一个明智的决定。如果有人愿意付出努力,我会愿意考虑一个全面解决方案。

0好评
参考: https://clojure.atlassian.net/browse/LOGIC-35(由 alex+import 报告)
...