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í  | |
  | |