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

欢迎!请查看关于页面以了解更多关于这个网站如何运作的信息。

+1
编译器

显然,JVM有一个label/goto机制。我们能否将Clojure语言中添加这样的功能?

我想有两个问题可以100%独立地解决。
1. 理论上是否可能。也就是说,JVM指令真的允许这样的Clojure原语吗。也许我弄错了,这实际上是不可能的。
2. 核心Clojure维护者能否被说服这个请求的合理性。

通常,goto在机器生成代码中很有用,不太适合人类编写的代码。

我至少有三个用例,我希望有这样一个机制。

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

我知道很多人可能会用哲学论点来回应为什么你不应该使用goto。我希望避免在这里进行这样的讨论。

对我来说,一个合理的选择可能是类似于Common Lisp prog的Clojure原语,尽管绑定变量的能力并不是必需的,因为这可以通过用户使用带有宏的let轻松实现。

1 个回答

0

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

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

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

我们对此建议有所研究,但我很难说它是否会被包含以及何时会被包含。
Alex,你能谈谈所讨论的一些优缺点吗?
...