Апостроф в идентификаторах в 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 (учебники), но я не понимаю этого. Быстрое объяснение приветствуется.
Ответы
Ответ 1
Апостроф - это просто часть имени. Это соглашение об именах (идиома), принятое в Haskell.
Соглашение в Haskell заключается в том, что как в математике, апостроф в имени переменной представляет собой переменную, которая каким-то образом связана или похожа на предыдущую переменную.
Пример:
let x = 1
x' = x * 2
in x'
x'
связан с x
, и мы указываем, что с апострофом.
Вы можете запустить это в GHCi, кстати,
Prelude> :{
Prelude| let x = 1
Prelude| x' = x * 2
Prelude| in x'
Prelude| :}
2
Ответ 2
Это только один символ, разрешенный в идентификаторах. Подумайте об этом как о другом письме.