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

欢迎!请参阅关于页面以了解更多关于如何使用该服务的信息。

0
Clojure

我遇到了几次需要执行 (symbol ns "bar") 的情况,而现有的方法(symbol (name (ns-name ns)) "bar")似乎并不是唯一的方法。通过向 Symbol.intern() 添加一个新的参数来使这个方法工作,其中包含一个补丁。

关于这个想法的一些讨论,请参考:https://groups.google.com/forum/#!topic/clojure/n25aZ5HA7hc/discussion

6 答案

0

stu 评论

我不确定我是否喜欢这个,但我希望重命名和命名空间进行反思。在进行大量的跨语言工作的时候,如果有一个有名称协议和一个有命名空间协议将是非常棒的。

有了这样的协议,你也可能单独考虑在它们的基础上实现 symbol 等。

0

hiredman 评论

命名是一个协议或接口并不影响当你有一个命名空间时创建一个带有命名空间的符号。

我认为修补还不够,除了支持 (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,我并不反对为“命名空间”和“名称空间化”创建单独协议的想法。我应该去哪里提出创建这些协议并将其引入clojure的建议?我对此有意尽我所能或成为其中的一员。但我作为局外人士,不知道下一步该做什么 -- 在Jira创建一个工单已经用尽了我对整个流程的了解。

0

评论者:franks

乔提出为符号提出的增强也想适用于关键字。

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

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

-FrankS.

0

评论者:ambrosebs

我已经对此投过票,但我撤回了我的投票。对我而言,两个参数都是字符串的明确实现是正确的,但符号/命名空间/命名/名称空间化事物的组合则不太明确。

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