Перейти к содержанию

Язык Haskell: О пользе и вреде лени: различия между версиями

→‎Задача разложения числа на степени двойки: Исправление опечаток. Замена toDigisI на toDigits
Содержимое удалено Содержимое добавлено
→‎Задача разложения числа на степени двойки: Исправление опечаток. Замена toDigisI на toDigits
Строка 192:
Введём следующие определения.
 
<code>toDigsItoDigts :: Integer -&gt; [Integer]
toDigsItoDigts n | n == 0 = []
| otherwise = (n `mod` 2) : toDigsItoDigts (n `div` 2)
countUnits = sum . toDigsItoDigts
toDigits = reverse . toDigsItoDigts</code>
 
Функция <code>toDigsItoDigts</code> для данного числа <math>n</math> находит список его разрядов в двоичном представлении в направлении справа налево. Стандартная функция <code>reverse</code> обращает список: получает на вход список и возвращает тот же список, в котором элементы идут в обратном порядке, начиная с последнего до первого:
 
{|
|<code>toDigsItoDigts (1 + 8 + 16)</code>
|<math>\Rightarrow</math>
|[1, 0, 0, 1, 1],
Анонимный участник