2024年Clojure状态调查!中分享你的想法。

欢迎!请查看关于页面以了解更多关于它是如何工作的信息。

+1
编译器

显然JVM有一个label/goto机制。在Clojure语言中添加这种功能是否可能?

我认为可以提出两个可以完全独立解决的问题。
1. 是否在理论上可能。也就是说,JVM指令是否真的允许Clojure原语。也许我弄错了,这根本不可能。
2. 是否能够说服Clojure核心维护者该请求的优点。

一般情况下,goto在机器生成的代码中很有用,而在人类编写的代码中则不是那么有用。

我至少有三个需要这种机制的场景。

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

我知道很多人可能会对此提出一些关于为什么不应该使用goto的哲学论点。我希望避免在这里进行这样的讨论。

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

1 个回答

0

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

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

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

by
我们对此提案进行了研究,对我来说很难说是否/什么时候会被包含。
by
Alex,你能谈谈已经讨论过的一些利弊吗?
...