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

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