【发布时间】:2011-09-13 12:17:57
【问题描述】:
我想问一下 Clojure 上有哪些类型的安全语言结构?
我已经多次阅读 Luke VanderHart 和 Stuart Sierra 的“实用 Clojure”,但我仍然有明显的印象,即 Clojure(与其他 lisp 一样)并没有非常重视编译时验证检查。类型安全只是对正确语义进行编译时检查的一种(非常流行的)策略
我问这个问题是因为我渴望被证明是错误的; clojure 上有哪些设计模式可用于验证(在编译时,而不是在运行时)期望字符串的函数不会被调用,例如整数列表?
另外,我读过像 Paul Graham 这样非常聪明的人公开提倡 lisp 允许在其之上实现从低级语言开始的所有内容(大多数人会说语言本身正在其之上重新实现),所以如果这个断言是真的,那么像类型检查这样的琐碎事情应该是小菜一碟。 那么您是否觉得在 clojure 或其他 lisps 中存在类型系统(或实现此类类型系统的能力),这使程序员能够将验证检查从运行时偏移到编译时,甚至更好,设计时?
【问题讨论】:
标签: clojure compiler-errors static-analysis type-safety compilation-time