Шаг 119.
Основы языка Haskell.
Потенциально бесконечные списки. Задачи для самостоятельного решения
На этом шаге мы приведем задачи для самостоятельного решения.
Замечание. Найдите ошибки, описки, неточности и прочие изъяны в приведенных задачах.
1. Конструирование конечных списков
1*. Укажите, не используя интерпретатор
Haskell, результат выполнения следующих функций:
(1) [(x,y)|x <- [1..3],y <- [1..3]];
(2) [x+y|x <- [1..4],y <- [1..x],even x].
2. (По [1]). Напишите рекурсивную функцию, конструирующую конечный n-элементный список n∈N:
- (1) натуральных чисел;
- (2) нечётных натуральных чисел;
- (3) чётных натуральных чисел;
- (4) кубов натуральных чисел;
- (5) факториалов;
- (6) степеней числа 3;
- (7) треугольных чисел Ферма;
- (8) пирамидальных чисел Ферма.
2. Конструирование потенциально бесконечных списков (потоков)
1*. Укажите, не используя интерпретатор Haskell, результат выполнения следующей функции:
take 5 [2*x | x <- [1..], x^2>3]
2. Напишите корекурсивную функцию, генерирующую потенциально бесконечные списки (потоки):
- (1) квадратов натуральных чисел;
- (2) кубов натуральных чисел;
- (3) степеней пятёрки;
- (4) факториалов натуральных чисел;
- (5) мультифакториалов натуральных чисел;
- (6) вторых суперстепеней натуральных чисел;
- (7) третьих суперстепеней натуральных чисел.
3. (По [2, с.198]) Напишите функцию, конструирующую потенциально бесконечный список
элементов, вычисляемых с помощью рекурсивной функции:
(1)Душкин Р.В. Функциональное программирование на языке Haskell. - М.: ДМК Пресс, 2007. - 608 с.
(2)Андерсон Дж. А. Дискретная математика и комбинаторика. - М.: Издательский дом "Вильямс", 2003. - 960 с.
Со следующего шага мы начнем рассматривать абстрактные типы данных.
Предыдущий шаг
Содержание
Следующий шаг