Č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 -> Booljenž otestuje, zda je zadané číslo prvočíslem. | |