Seznam je v Haskellu kolekce hodnot téhož datového typu. Ke každému typu t můžeme vytvořit typ [t], představující seznam hodnot typu t. Tímto typem může být libovolný datový typ, včetně funkce nebo jiného seznamu.
[1,2,3,5,8] :: [Int] [True] :: [Bool] [fac,inc] :: [Int -> Int] [[Int]] :: [[1,3],[2,4,6],[]]Pořadí prvků v seznamu je významné, stejně jako počet výskytů jednotlivých hodnot, takže například seznamy [1,2], [2,1] a [1,2,1] jsou navzájem různé.
Speciálním případem seznamu je seznam hodnot typu Char, který je ekvivalentem typu String. Následující definice jsou tedy ekvivalentní:
['a','h','o','j'] :: String "ahoj" :: String
Seznam je tedy tvořen posloupností prvků v hranatých závorkách, jednotlivé prvky se oddělují čárkou. Prázdný seznam [] neobsahuje žádné prvky. Každý neprázdný seznam můžeme vytvořit spojením nějakého prvku x a seznamu xs tak, že prvek x přidáme před seznam xs. To zapisujeme pomocí operátoru dvojtečka jako x:xs. Zápis [1,2,3] je tedy zkrácenou formou výrazu 1:(2:(3:[])) a vzhledem k tomu, že operátor dvojtečka je asociativní zprava, můžeme závorky vynechat a psát 1:2:3:[].
Seznamy tvořené částí aritmetické posloupnosti můžeme vyjádřit ve zkráceném tvaru pomocí jednoho z následujících zápisů:
[2..5] = [2,3,4,5] [1,3..10] = [1,3,5,7,9] ['a'..'d'] = "abcd"
![]() | Cvičení |
| |