Ral*_*lph 23 static-typing clojure
我知道这听起来像是对Lisp爱好者(以及其他动态语言爱好者)的亵渎,但是增强Clojure编译器以支持静态(编译时)类型检查有多难?
抛开支持和反对静态和动态类型的参数,这是否可行(不是"这是可行的")?
我想添加一个新的读取器宏来强制编译时类型(#^宏的增强版本)并将类型信息添加到符号表将允许编译器标记变量被滥用的位置.例如,在下面的代码中,我期望编译时错误(#*是"编译时"类型的宏):
(defn get-length [#*String s] (.length s))
(defn test-get-length [] (get-length 2.0))
Run Code Online (Sandbox Code Playgroud)
#^宏甚至可以与全局变量(*compile-time-type-checking*)一起重用,以强制编译器进行检查.
有关可行性的任何想法?
dno*_*len 10
一定可能.但是我认为Clojure不会得到任何形式的弱静态类型 - 它的好处太少了.
丰富的希基几次但是已经表达了他对齐语言的强劲,可选和表现力的打字功能一样,http://www.lambdassociates.org/qilisp.htm

是! 看起来正在进行一个项目core.typed,以使可选的静态类型检查成为现实.请参阅Github项目及其
文档
这项工作源自Ambrose Bonnaire-Sergeant 的本科荣誉学位论文(PDF),与Typed Racket系统有关.
| 归档时间: |
|
| 查看次数: |
5888 次 |
| 最近记录: |