Neu*_*onQ 18 types symbols clojure
我正在学习Clojure,我无法理解一些语言设计决策:为什么像Clojure这样的不可变字符串的语言也需要关键字和符号数据类型?字符串是否只有可选的命名空间和元数据以及所有这些东西?对于不可变字符串,比较也可以是身份基础,不是吗?
或者,由于与Java的互操作是Clojure的必备条件,至少具有Java String类型和KeywordSymbol数据类型.
我发现这个字符串/关键字/符号"三分法"特别奇怪,因为Clojure似乎非常关注"纯度"并且在其他方面保持简单.
Art*_*ldt 14
他们在语言中填补了非常不同的角色:
runnable并可以直接用于调用函数.你不能运行一个字符串.Clojure设计的核心原则之一是拥抱您的主机平台,因此在Clojure字符串中是Java字符串,您永远不需要在某些convert-to-clojure-string函数中包装Java字符串以使其进入Clojure生态系统.这需要使用未修改的Java字符串以及数字类型.关键字和符号是由Clojure添加的新构造,因此只需要从Java生态系统的其余部分以有用的方式访问它们.符号和关键字只需要实现接口的类就可以访问它们.一开始认为,为了使新语言在JVM生态系统中取得成功,它需要完全接受Java并最大限度地减少"阻抗不匹配"(对于流行语来说很抱歉),即使这需要在语言中添加更多语言.没有这个目标就被要求了.
编辑:
您可以排序的把象征注入关键字由def荷兰国际集团它它的自我
user> a
; Evaluation aborted.
user> :a
:a
user> (def a 'a)
#'user/a
user> a
a
user>
Run Code Online (Sandbox Code Playgroud)
关键词评估自己
| 归档时间: |
|
| 查看次数: |
3398 次 |
| 最近记录: |