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

欢迎!请参阅关于页面以获取更多关于这个工作方式的信息。

+17
语法和读取器
编辑

刚刚看到Go 1.13版本中添加了以下功能

数字分隔符:现在可以用下划线分隔(分组)任何数值字面量的数字,例如在1_000_000、0b_1010_0110或3.1415_9265中。下划线可以出现在任意两个数字之间,或者字面量前缀和第一个数字之间。

我认为这是一个相当 neat的特性。在编写大数字时,如92347683,如果没有分隔符,阅读和心算会变得困难。如果读者有分隔语法,这将是一个很好的补充。不一定要用下划线,而且考虑所有有效的Clojure数值字面量可能需要一些时间和思考。

谢谢

4 个答案

+1

反对这一点的理由可能是它可能会影响代码搜索。比如说,你想要在代码中搜索数字10000所在的位置,你可能不得不搜索10_100,或者可能是100_00等。

不确定这是否是拦截器,我不记得最后一次在代码库中搜索数字是什么时候,但仍然值得考虑。

自 Java 7 开始,Java 引入下划线作为分隔符,我认为这是正确的。

https://docs.oracle.com/javase/7/docs/technotes/guides/language/underscores-literals.html
反对这个想法的另一个论点是,就像为了添加原始字符串而提出的论点一样,这可能会使工具变得复杂,也许只有微小的收益。任何使解析更加困难并增加边缘情况的特性基本上都会影响工具。
>> 它可能会影响代码的搜索。

告诉它 ::命名空间/关键字语法和命名空间映射。诚然,它使得数字字面量不太容易用 grep 搜索,但 Clojure 本身就完全不适用 grep。
+1

如果这个特性在 Clojure 读取器编写时存在,我认为我们很可能会支持它以保持兼容性。但现在我认为您必须权衡此特性增加的实用性(我认为非常小)与“更新 Clojure 工具链中的每个读取器/解析器”的工作量,这无疑是在整个生态系统中进行的大量工作。

0
by
编辑 by

这种逻辑似乎是为了使数字对人类更容易解析,所以我觉得这更像是编辑器中的一个特性,而不是语言本身。

将这种改变添加到语言中会使数字的语法更加复杂,增加了所有工具正确处理所需的倍数工作量。因此,这会影响编辑器、语言服务器(LSP)、格式化工具、代码检查器等。所以这个变化不应仅限于Clojure阅读器。

一旦添加,代码库可能会轻易地变成混合的风格,增加混乱和挫败感,需要开发团队和维护者花费时间决定使用哪种数字格式。

一些编辑器已经具有显示带有花哨符号的lambda函数和部分的功能。
许多编辑器还将十六进制颜色代码着色。
所有这些都不需要更改底层语言。

将此作为编辑器特性(例如,可根据需要配置分隔符,例如 _、.,其中逗号和点对货币值很有用)的优点在于可以进行配置。

在不更改底层语言的情况下,搜索和使用其他文本工具的能力保持不变。

我希望不要将此特性包含在语言中,并鼓励那些觉得它有用的人联系他们使用的编辑工具的维护者。

by
> 这种逻辑似乎是为了使数字对人类更容易解析,所以我觉得这更像是编辑器中的一个特性,而不是语言本身。

通过将其推向编辑器,现在所需的学习它的工作量是人们会使用多少编辑器的倍数。此外,这使得无法以纯文本(例如,在补丁或diff中)阅读代码。通过添加到语言本身,您完全绕过了所有额外的努力,并为所有人提供了一致和可理解的格式,从而受益。

如果我们投票(我知道我们现在没有),我将投票支持。
0
by

在 Emacs 中,您可以尝试使用此次要模式以颜色突出显示千位数的块:https://emacs.stackexchange.com/a/59343

...