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票数
作者:
...