内容简介:翻译自:https://stackoverflow.com/questions/23282683/is-clojure-uni-typed
的迷人作品.其中写道:
And this is precisely what is wrong with dynamically typed languages: rather than affording the freedom to ignore types, they instead impose the bondage of restricting attention to a single type! Every single value has to be a value of that type, you have no choice!
这 has come to mean uni-typed languages .(单一语言).
现在Clojure claims to be a dynamic language :
Clojure is a dynamic programming language that targets the Java Virtual Machine (and the CLR, and JavaScript). It is designed to be a general-purpose language, combining the approachability and interactive development of a scripting language with an efficient and robust infrastructure for multithreaded programming. Clojure is a compiled language – it compiles directly to JVM bytecode, yet remains completely dynamic . Every feature supported by Clojure is supported at runtime.
“动态”意味着“可以在运行时与之交互”,而不是“没有类型”.
现在静态和动态之间的关键区别似乎是“我可以在编译时遇到类型失败吗?”
如果我写下面的Clojure代码:
(deftype circle-type [radius] )
(deftype square-type [side-length])
(defn def-check-type [new-symbol-type existing-symbol]
(let [existing-symbol-type (type existing-symbol)]
(cond
(= new-symbol-type existing-symbol-type)
(def new-symbol existing-symbol)
:else (str "types didn't match: " new-symbol-type " : " existing-symbol-type))))
(println (def-check-type circle-type (square-type. 2)));)
然后在Leiningen编译它:
lein uberjar
然后我得到以下内容:
$lein uberjar Compiling clojure-unittyped.core types didn't match: class clojure_unittyped.core.circle-type : class clojure_unittyped.core.square-type
在动态语言中,这似乎是编译时的类型失败.
我的问题是:Clojure Uni-Typed?
编辑 – 我知道 core.typed – 这是一项很棒的工作.我问这个问题是分开的.
的单类型分类在实践中并不是很有用.
单类型理论很少揭示动态类型语言中编程的本质;它主要用于证明类型理论中存在“动态”类型.
像 Typed Racket 这样的项目被发明,正是为了发现和模拟 程序员 在这些语言中使用的隐式类型信息.通常类型都非常准确,并且表明还有很多东西比满足眼睛要多.
翻译自:https://stackoverflow.com/questions/23282683/is-clojure-uni-typed
以上所述就是小编给大家介绍的《动态 – Clojure Uni-Typed?》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- .net core3.1 abp动态菜单和动态权限(动态菜单实现和动态权限添加) (三)
- 动态代理三部曲(一):动态代理模式及实现原理
- 你必须会的 JDK 动态代理和 CGLIB 动态代理
- 彻底搞懂jdk动态代理并自己动手写一个动态代理
- Android程序员必会技能---运行时动态生成类---之动态代理
- 安卓动态加载技术
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
ARM嵌入式系统开发
斯洛斯 / 北京航大 / 2005-5 / 75.00元
《ARM嵌入式系统开发:软件设计与优化》从软件设计的角度,全面、系统地介绍了ARM处理器的基本体系结构和软件设计与优化方法。内容包括:ARM处理器基础;ARM/Thumb指令集;C语言与汇编语言程序的设计与优化;基本运算、操作的优化;基于ARM的DSP;异常与中断处理;固件与嵌入式OS;cache与存储器管理;ARMv6体系结构的特点等。全书内容完整,针对各种不同的ARM内核系统结构都有详尽论述,......一起来看看 《ARM嵌入式系统开发》 这本书的介绍吧!