Haskell 中标识符中的撇号
我在互联网上发现了这段代码:
digits 0 = [0]
digits n = digits' n []
where digits' 0 ds = ds
digits' n ds = let (q,r) = quotRem n 10
in digits' q (r:ds)
sumOfDigits = sum . digits
有人能快速解释一下递归函数调用后的“ ' ”符号( digits n =digits' n []
)的用途吗?我在 Haskell (教程)中看到了一些其他代码示例,但我不明白这个。快速解释表示赞赏。
I found this code snipped on the internet:
digits 0 = [0]
digits n = digits' n []
where digits' 0 ds = ds
digits' n ds = let (q,r) = quotRem n 10
in digits' q (r:ds)
sumOfDigits = sum . digits
Can someone quickly explain what the " ' " sign ( digits n = digits' n []
) after the recursive function call is for? I've seen some other code examples in Haskell (tutorials), but im not understandig this one. A quick explanation is appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
撇号只是名称的一部分。它是 Haskell 中采用的命名约定(惯用语)。
Haskell 中的约定是,就像数学中的一样,变量上的撇号name 表示与先前变量以某种方式相关或相似的变量。
例如:
x'
与x
相关,我们用撇号表示。顺便说一下,你可以在 GHCi 中运行它,
The apostrophe is just part of the name. It is a naming convention (idiom) adopted in Haskell.
The convention in Haskell is that, like in math, the apostrophe on a variable name represents a variable that is somehow related, or similar, to a prior variable.
An example:
x'
is related tox
, and we indicate that with the apostrophe.You can run this in GHCi, by the way,
它只是标识符中允许的另一个字符。将其视为另一封信。
It's just another character allowed in identifiers. Think of it as another letter.