Často potřebujeme vyjádřit seznam pomocí toho, jaké vlastnosti mají mít jeho prvky. Tuto notaci vlastně už znáte z matematiky, kde se setkáváme s notací pro „množinu takových prvků x, které jsou z množiny A a platí pro ně podmínka p“, neboli { x | x in A, p x }.
Podstatou notace, kterou budeme dále nazývat generátor seznamu, je to, že vytváříme popis seznamu pomocí prvků jiného seznamu. Z tohoto zdrojového seznamu postupně bereme jednotlivé prvky, testujeme je a transformujeme na prvky cílového seznamu. Pomocí generátorů seznamu jsme schopni jednoduše a kompaktně zapsat spoustu užitečných výpočtů, které se nám budou hodit. Nejlépe si vše ukážeme na příkladech.
Cvičení  | |
Definujte funkci 
        divisors :: Int -> [Int]
která vrátí seznam všech dělitelů zadaného kladného čísla. Pomocí této funkce
pak definujte predikát 
        isPrime :: Int -> Bool
jenž otestuje, zda je zadané číslo prvočíslem.
 | |