2024 Clojure状态调查!中分享您的想法。

欢迎!请查看关于页面,了解有关如何使用本站的一些更多信息。

0
core.logic
我认为能够将多个noms在同一个活页夹中绑定可能会很有用,无论是否具有显著的顺序。

我目前考虑到的几个用例

非柯里化的语言中的Lambdas。这里的顺序很重要。

(== (list 'fn (ties [x y] (list '+ x y))))
    (list 'fn (ties [z w] (list '+ z w))))


我的原始用例,逻辑公式中的自由/量词变量。顺序不重要(注意第二个主体的noms已交换)。

(== (list '∀ (ties #{x y} (list '= (list '+ x y) (list '+ y x)))))
    (list '∀ (ties #{z w} (list '= (list '+ w z) (list '+ z w))))



我在这里有一个草稿实现:https://github.com/tomjack/core.logic/compare/ties

此实现的潜在问题
- 是否可以重新扩展IWalkTerm到IPersistentSet?
- Tie和Ties是否应提供统一接口?(例如(tie? (ties #{x} x)))

4 答案

0

评论:dnolen

我真的不认为集合位是必要的,向量语法就很好。此外,避免在集合中重新使用IWalkTerm。是的,tie?应在任何情况下都适用。

0

评论:tomoj

嗯...

`
(== (list 'fn (ties [x y] (list '- x y))))

(list 'fn (ties [z w] (list '- w z)))

`

我想不是。

你的意思是顺序总应该很重要(去掉排列的东西),还是它永远不会很重要(对于像上面这样的事情不要使用ties)?

0

评论:dnolen

嗯,好观点。我会再思考一下。

0
参考:[https://clojure.atlassian.net/browse/LOGIC-138](https://clojure.atlassian.net/browse/LOGIC-138)(由tomoj报告)
...