I found this code snipped on the internet:
digits 0 = [0]
digits n = digits' n []
where digits' 0 ds = ds
digits开发者_JAVA百科' 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.
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:
let x = 1
x' = x * 2
in x'
x'
is related to x
, and we indicate that with the apostrophe.
You can run this in GHCi, by the way,
Prelude> :{
Prelude| let x = 1
Prelude| x' = x * 2
Prelude| in x'
Prelude| :}
2
It's just another character allowed in identifiers. Think of it as another letter.
精彩评论