Apostrophe in identifiers in Haskell

coding-style, haskell, identifier

Solution

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

Problem

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.

Original source