请在2024年Clojure状态调查!中分享您的想法。

欢迎!请参阅关于页面了解有关它如何运作的更多信息。

+1
编译器

显然,JVM有一个label/goto机制。有没有可能将Clojure语言添加此功能?

我想有两种问题是100%可以独立解决的。
1. 在理论上是否可行。即,JVM指令是否真的允许Clojure原语实现这样的功能。也许我弄错了,这实际上是不可行的。
2. 核心Clojure维护者是否会被请求的优点所说服。

一般来说,goto在机器生成的代码中很有用,而在人写的代码中并不太多。

我至少有三个使用场景想要有这样的机制。

  1. 确定性有限自动机的序列化
  2. 区分网的序列化
  3. 将Knuth风格算法从《计算机编程艺术》翻译到Clojure

我知道很多人可能会回应说,用goto是不好的哲学观点。我希望避免这种讨论。

在我看来,一个合理的可能性是在Clojure中有一个类似于Common Lisp prog的原始组件,尽管绑定变量并不是必需的,因为用户可以通过使用具有宏用户的let来轻松实现。

1 答案

0

一个相关的问题是关于Michal Marczyk围绕recur-to所做的某些工作,这是循环中允许不同recur目标的一种机制。

讨论
https://www.youtube.com/watch?v=SJmK1R0ADnc

Jira问题
https://clojure.atlassian.net/browse/CLJ-2235

我们研究了这项提案,对我来说很难说它是否会包含进来。
Alex,你能谈谈已讨论的优点和缺点吗?
...