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

欢迎!请查看 关于 页面获取更多关于这个工作的信息。

0
Clojure

我遇到过几次需要做 (symbol ns "bar") 的情况, existing的方法 (symbol (name (ns-name ns))) 只是感觉不是唯一的工作方法。包含一个补丁来通过添加新的 Symbol.intern() 重载来实现这一点。

有关这个想法的一些讨论这里: https://groups.google.com/forum/#!topic/clojure/n25aZ5HA7hc/discussion

6 答案

0

由 stu 发表的评论:

我不敢确定我是否喜欢这样,但我希望重新思考名称和命名空间。由于涉及到大量的跨语言工作,若能提供“我有名称”和“我有命名空间”的协议将非常棒。

有了这样的协议,我们也可以单独考虑根据它们实现 symbol 等。

0

由 hiredman 发表的评论:

将命名定义为协议或接口似乎与在手中有一个命名空间时能够创建命名空间限定符的 symbol 无关。

我认为补丁还不够,不仅应该支持 (symbol ns "foo"),而且应该支持 (symbol ns 'foo),鉴于 (symbol 'foo) 和 (symbol "foo") 都可以工作,(symbol 'bar 'foo) 也应该可以工作,但现在还不行。

如果 Named 是一个协议,并且如果您将它扩展到 String,并且如果您使 symbol 函数从一到两个 Named 实体创建符号,您仍然需要做 (symbol (ns-name ns) 'foo) 或 (symbol (ns-name ns) "foo")

0

评论者:joegallo

Stuart,我不反对为命名和命名空间分别创建协议的想法。我应该如何创建一个 proposal 来创建这些协议并将其纳入 clojure 中?我对做这项工作或成为其中的一员很感兴趣。但作为一个局外人,我不知道下一步该做什么--创建了 Jira 中的 ticket 已经用尽了我对流程的了解。

0

评论者:franks

乔夫提出的对符号的增强也将适用于关键词。

参见:http://groups.google.com/group/clojure/browse_thread/thread/222e4abc16df8b20

可能相同的/类似的解决方案也适用于这两个问题。

-FrankS.

0

评论者:ambrosebs

我曾为此投票,但我撤回了我的投票。对我来说,两个参数都是字符串显然是正确的实现,但符号/命名空间/命名/命名空间对象的组合并不那么清晰。

0
参考:https://clojure.atlassian.net/browse/CLJ-891 (由 joegallo 报告)
...