MyTetra Share
Делитесь знаниями!
Списки и строки в Haskell
Время создания: 25.04.2019 13:15
Автор: br0ke
Текстовые метки: haskell, fp, list, type, datatype, string, char
Раздел: Информационные технологии - Haskell
Запись: and-semakin/mytetra_data/master/base/1556180121r12l5qv2fn/text.html на raw.githubusercontent.com

Также в Haskell можно использовать ещё один контейнерный тип -- список. Списки, в отличнии от кортежей, гомогенны, то есть типы всех значений внутри списка должны совпадать. Длина списка может изменяться. Список -- это фундаментальный тип данных в Haskell и в ФП вообще.


Объявление списка:

> [1, 2, 3]

[1, 2, 3]

> :type [1, 2, 3]

[1, 2, 3] :: Num a => [a]

> :type [True, False, False]

[True, False, False] :: [Bool]


Пустой список:


> []

[]


Для типа [Char] существует синоним String и альтернативный синтаксис:

> :type ['H', 'i']

['H', 'i'] :: [Char]

> :type "Hi"

"Hi" :: [Char]


Таким образом, строка в Haskell -- это список символов.


Для работы со списками определены следующие операторы (infixr 5):

  • (:) -- добавление элемента в голову списка (слева элемент, справа список)
  • (++) -- конкатенация двух списков


> 'H' : "ello"

"Hello"

> 'k' : 'e' : 'k' : []

"kek"

> "Hello" ++ " " ++ "world!"

"Hello world!"

 
MyTetra Share v.0.59
Яндекс индекс цитирования