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

欢迎!请参阅关于页面以了解更多有关此信息。

0
core.logic
我认为能够在单个脊背中绑定多个noms可能很有用,无论是否有明显的顺序。

我目前考虑到的几个用例

非currying语言中的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报告)
...