33
из двух полей, причем первым полем в каждом кортеже будет список
символов, а вторым полем – вещественное число.
Сами объекты-списки в простейшем случае задаются перечислением
своих компонентов в квадратных скобках через запятую, так что,
например, [1, 3, 4, 8] – это четырехкомпонентный список целых
чисел (типом этого списка будет [Int]), а [(['p', 'i'], 3.14),
(['e'], 2.72)] – список вышеупомянутого
типа [([Char],
Double)]. Заметим, что запись, в которой компонентами списка будут
объекты разных типов, синтаксически неверна, так что, скажем, [3, 4,
'*'] – не может служить изображением списка, поскольку из трех
указанных компонент две первые - это целые числа, а третья – символ.
Отметим два полезных сокращения, использующихся для записи
списков. Во-первых, список, состоящий из символов, можно записать в
виде строки, заключив составляющие его символы в двойные кавычки.
Так, например, строка "Haskell" обозначает в программе список из семи
символьных значений, и такая запись полностью эквивалентна
расширенной записи: ['H', 'a', 's', 'k', 'e', 'l', 'l'].
Для списков символов в языке также есть и специальный идентификатор
типа – String, так что его можно использовать
в любом месте программы
вместо [Char]. Таким образом, один из примеров предыдущего абзаца
можно записать так: список [("pi", 3.14), ("e", 2.72)] является
примером изображения списка типа [(String, Double)].
Второе удобное сокращение или даже, скорее, средство построения
списков – это задание списка целых чисел, образующих арифметическую
прогрессию. Если шаг прогрессии равен единице, то можно указать только
первый и последний элементы списка, разделив их символом из двух
точек. Так [1..10] обозначает список из десяти последовательных
натуральных чисел от 1 до 10. Если шаг прогрессии не равен единице, то
указывают два первых элемента списка и последний элемент. Таким
образом, изображение списка [3, 5..11] задает список из пяти целых
чисел 3
, 5, 7, 9 и 11. Отметим, что эта запись может использоваться и для
задания списков с числом элементов, неизвестным в момент написания
программы. Например, изображение [1..n] может использоваться для
создания списка первых натуральных чисел от единицы до текущего
значения n, которое в разных ситуациях при исполнении программы
может быть различным.
Комбинировать в изображении списка прогрессию
с отдельными элементами, не входящими в прогрессию, нельзя. Так,
например, запись [3, 5..13, 14] будет некорректной.
Списки могут создаваться в программе путем последовательного
присоединения элементов к началу списка с помощью специальной
операции – конструктора списков, которая изображается в виде двоеточия.
Например, если x – список из целых чисел, равный [2,3,4]
, то