gpt4 book ai didi

clojure - Clojure 中的类型安全

转载 作者:行者123 更新时间:2023-12-02 11:57:25 25 4
gpt4 key购买 nike

我想问一下 Clojure 上有哪些类型安全语言结构?

我现在已经读过 Luke VanderHart 和 Stuart Sierra 的《Practical Clojure》好几遍了,但我仍然有一个明显的印象:Clojure(像其他 lisp 一样)并没有非常认真地对待编译时验证检查。类型安全只是对正确语义进行编译时检查的一种(非常流行的)策略

我问这个问题是因为我渴望被证明是错误的; clojure 上有哪些设计模式可以用来验证(在编译时,而不是在运行时)需要字符串的函数不会被调用,比如整数列表?

此外,我读过像 Paul Graham 这样的非常聪明的人公开提倡 lisp 允许在其之上实现低级语言的所有内容(大多数人会说语言本身正在其之上重新实现),所以如果这个断言是正确的,那么像类型检查这样的琐碎事情应该是小菜一碟。 那么您是否认为 clojure 或其他 lisp 中存在类型系统(或实现此类类型系统的能力),使程序员能够将验证检查从运行时偏移到编译时,甚至更好,设计时?

最佳答案

Clojure 中的编译单元非常小——只有一个函数。 Lispers 倾向于在开发时更改正在运行的程序的一小部分。将静态类型检查引入这种开发风格是有问题的 - 为了更深入地讨论为什么我推荐这篇文章 Types are Anti-Modular by Gilad Bracha.因此,Clojure 更喜欢前置/后置条件,这与 Lisp 高度 REPL 导向的开发更加契合。

也就是说,为 Clojure 构建一个点菜类型系统当然是可取的并且是可能的。 Qi/Shen 和 Typed Racket 开辟了这条道路。此功能可以轻松地作为库提供。我希望将来能用 core.logic - https://github.com/clojure/core.logic 构建类似的东西.

关于clojure - Clojure 中的类型安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6323896/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com