На этом шаге мы перечислим простейшие типы данных.
В языках функционального программирования простейшим типом данных, на основе которых строятся все остальные, является атом.
Первоначальное значение слова "атом" (от греч. "а" - не, "том" - часть) - это "тот, который не может быть дальше разделён".
Фактически атом - это слово в некотором алфавите.
Приведём простейшие (базовые) типы данных языка Haskell:
Рис.1. Схема типов данных
Формальное описание синтаксиса приведённых выше типов данных представим в форме Бэкуса-Наура.
Наименование простейших типов данных должно начинаться с прописной (заглавной) латинской буквы.
1. Integer - имя типа данных для представления целых чисел с любым (более точно, потенциально бесконечным) количеством значащих цифр ("бесконечное" целое).
<Целый_числовой_атом>::=(+¦-)<Десятичное_число> ¦(+¦-)0o<Восьмеричное_число> ¦(+¦-)0O<Восьмеричное_число> ¦(+¦-)0x<Шестнадцатеричное_число> ¦(+¦-)0X<Шестнадцатеричное_число> Цифра⌋⌊Латинская буква <Цифра> ::=1¦2¦3¦4¦5¦6¦7¦8¦9¦0 <Восьмеричная_цифра> ::=1¦2¦3¦4¦5¦6¦7¦8¦0 <Шестнадцатеричная_цифра>::=1¦2¦3¦4¦5¦6¦7¦8¦0¦A¦B¦C¦D¦E¦F¦a¦b¦c¦d¦e¦f <Десятичное_число>::=<Цифра>¦<Цифра><Десятичное_число> <Восьмеричное_число>::=<Восьмеричная_цифра> ¦<Восьмеричная_цифра><Восьмеричное_число> <Шестнадцатеричное_число>::=<Шестнадцатеричная_цифра> ¦<Шестнадцатеричная_цифра><Шестнадцатеричное_число>
0, +123, -1111111, -0o5432, +0O345, +0x8A6F, -0X0BCD21E
2.Int - имя типа данных для представления целых чисел, входящих в интервал [-2147483648,2147483648].
0, +123, -2147483648, 0o200000000, +0O345, +0x8000000, -0X07FDE Цифра⌋⌊Латинская буква
3. Float - имя типа данных для представления десятичных чисел с плавающей точкой.
Значениями данных этого типа являются рациональные числа (!) из диапазона: 3.4*10-38 ÷ 3.4*1038.
+12.234, -0.987654, -5.34e-12, 2147483648.30e+10
4. Double - имя типа данных для представления десятичных чисел с плавающей точкой двойной точности.
Значениями данных этого типа являются рациональные числа (!) из диапазона: 1.7*10-308 ÷ 1.7*10308.
<Числовой_атом_с_плавающей_точкой_двойной_точности>::= (+¦-)<Десятичное_число>.<Десятичное_число>[<Экспонента>] ¦(+¦-)<Десятичное_число><Экспонента> <Экспонента>::=(e¦E)[+¦-]<Десятичное_число>
+1234.2343, -0.9876543210, -5.34567e-12, 21474648.2147483630e+50
5. Char - имя типа данных для представления литералов - объектов языка программирования, занимающих в памяти один байт (8 бит).
На базе этого типа данных формируются символьные и строковые литералы.
1. 'Q', 'u', '?', '0', ':', '\n'. 2. "Q", "u", "?", "0", ":", "\n", "2", "8".
6. Bool - имя типа данных для представления результата выполнения логических операций.
Значениями данных этого типа являются два значения:
True, False.
7. String - имя типа данных для представления строк - последовательности символов, начинающейся и заканчивающейся кавычками (").
Строки отличаются от литералов тем, что могут содержать в качестве элементов разделители: пробелы, точки, запятые и т.д., но не должны содержать внутри себя символа "кавычка" (").
На следующем шаге мы рассмотрим операции.