Skip to main content
 首页 » 编程设计

clojure之Clojure静态输入

2025年01月19日38cloudgamer

我知道这听起来像Lisp爱好者(和其他动态语言爱好者)的亵渎,但是增强Clojure编译器以支持静态(编译时)类型检查有多困难?

除了支持静态和动态类型的参数外,这是否可能(不是“建议这样做”)吗?

我在想,添加一个新的读取器宏以强制执行编译时类型(#^宏的增强版本),并将类型信息添加至符号表,将允许编译器标记变量被滥用的位置。例如,在下面的代码中,我期望编译时错误(#*是“compile-time”类型的宏):

(defn get-length [#*String s] (.length s)) 
(defn test-get-length [] (get-length 2.0)) 

#^宏甚至可以与全局变量( *compile-time-type-checking*)重用,以强制编译器执行检查。

对可行性有何想法​​?

请您参考如下方法:

当然有可能。编译器已经在1.3开发分支中对原始参数类型进行了一些静态类型检查。