评论者:thheller
如果需要,规范很容易完全移除,问题是如果想要保留一些,就必须保留所有,因为我们无法在编译时判断将会使用什么。
因此,我同意我们可能无法在这方面做得更多。尽管如此,我们可能还可以减少生成的代码量。考虑到其中的一些代码在运行时立即构建并丢弃。例如,{{cljs.spec.alpha/def-impl}} 通过宏代码传递 3 个参数。其中一个是第二个参数 {{spec}} 的原始代码 {{form}}。对于大量的规范来说,{{form}} 参数将立即丢弃并且从未使用,因为第二个 {{spec}} 参数已经取代了它。闭包永远不会删除 {{form}},所以我们可能在宏上做得更聪明一些。