为什么我们会在 Clojure 运行时看到 Arity 相关的异常?
我想,当我们编译代码本身时,编译器应该能够检查这一点。我们只在运行时捕获此类错误的原因是什么? ?
最佳答案
Clojure 的编译时类型信息非常有限。像 map
这样的函数无法指定它只接受单参数函数(当然,对于多集合 map
调用,这甚至不是真的)。同样,apply
使一切变得非常复杂:考虑 (apply f (read-list-from-user))
。这样就编译成功了吗?当然必须,即使我们不知道用户是否会为 f
输入正确数量的参数。因此,对于这种情况必须有一个运行时异常;那么您不妨在运行时无论如何处理所有异常,因为编译器无法保护您免受它们的影响。
关于clojure - 为什么我们在 Clojure 运行时会看到 Arity 相关的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22581968/