clojure - 为什么我们在 Clojure 运行时会看到 Arity 相关的异常?

标签 clojure

为什么我们会在 Clojure 运行时看到 Arity 相关的异常?

我想,当我们编译代码本身时,编译器应该能够检查这一点。我们只在运行时捕获此类错误的原因是什么? ?

最佳答案

Clojure 的编译时类型信息非常有限。像 map 这样的函数无法指定它只接受单参数函数(当然,对于多集合 map 调用,这甚至不是真的)。同样,apply 使一切变得非常复杂:考虑 (apply f (read-list-from-user))。这样就编译成功了吗?当然必须,即使我们不知道用户是否会为 f 输入正确数量的参数。因此,对于这种情况必须有一个运行时异常;那么您不妨在运行时无论如何处理所有异常,因为编译器无法保护您免受它们的影响。

关于clojure - 为什么我们在 Clojure 运行时会看到 Arity 相关的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22581968/

相关文章:

clojure - 使用 core.logic 列出唯一的 DAG 父级

clojure - 将本地 Java 类导入 Clojure

按 map 提供的多个属性过滤集合

clojure - Clojure 中的前向声明有哪些限制?为什么我不能在这个例子中使用 comp ?

clojure - conj 的奇怪行为

clojure - 有没有办法向 leiningen 添加第二个 src 文件夹?

multithreading - 为什么在另一个线程中循环大量数据会导致GC过度活跃,并阻止一些数据被释放?

browser - 使用 Shadow-cljs 观看应用程序时,我应该何时刷新浏览器以查看更改?硬刷新和重建怎么样?

clojure - clojure编译器生成的字节码中的 "public static {}"是什么意思?

clojure - 为什么juxt以并列命名?