显然JVM有一个label/goto
机制。向Clojure语言添加这种功能是否可能?
我想有 thể有两个问题可以独立处理。
1. 在理论上是否可能,也就是说,到底JVM指令是否真的允许这种Clojure原语。也许我弄错了,这实际上并不是可能的。
2. 是否能够说服Clojure的核心维护者此请求的优点。
通常在机器生成的代码中,goto
很有用,而在人类编写的代码中则不是这样。
我至少有三个用例,我想有这种机制。
- 确定性有限自动机的序列化
- 判别网的序列化
- 将Knuth风格算法从《计算机程序设计艺术》转换为Clojure
我知道许多人可能会就此提出为什么不应该使用goto的哲学论点。我希望避免这种讨论。
在我看来的一个似乎合理的可能性是,Clojure原语类似于Common Lisp prog,尽管绑定变量的能力实际上并非必要,因为用户可以通过使用一些宏定义let
来实现它。