На этом шаге мы рассмотрим такие конструкторы.
Перечислим эти конструкторы.
1. Функция, конструирующая потенциально бесконечный список, составленный из заданного элемента:
repeat:: a -> [a] repeat x
> repeat 2 > repeat ['a'] > repeat [1,2] > repeat 'a' [2,2,...] ["a","a",...] [[1,2],[1,2],...] "aa..."
2. Функция, конструирующая потенциально бесконечный список, состоящий из повторения элементов исходного списка:
cycle:: [a] -> [a] cycle lst
> cycle [2] > cycle [1,2,3] > cycle [[1],[2,3]] [2,2,...] [1,2,3,1,2,3,...] [[1],[2,3],[1],[2,3],...] > cycle ['a','b'] "abab..."
3. Функция, конструирующая потенциально бесконечный список, элементы которого образуют арифметическую прогрессию с разностью 1, начиная с заданного положительного элемента:
numericEnumFrom:: Real a => a -> [a] numericEnumFrom n
> numericEnumFrom 3 [3,4,5,6,7,8,9,10,11,...]
enumFrom n
> enumFrom 1 [1,2,3,4,5,6,7,8,9,10,11,...]
4. Функция, конструирующая потенциально бесконечный список, элементы которого образуют арифметическую прогрессию с разностью, определяемую двумя начальными положительными значениями:
numericEnumFromThen:: Real a => a -> a -> [a] numericEnumFromThen m n
> numericEnumFrom 1 4 [1,4,7,10,13,16,19,22,25,28,...]
enumFromThen m n
> enumFromThen 3 10 [3,10,17,24,31,...]
На следующем шаге мы рассмотрим конструирование списков с помощью определителя списка.