5.3. Základní operace nad seznamy

Většinu základních operací nad seznamu najdeme v souboru Prelude.hs, který obsahuje definice předdefinovaných základních typů a funkcí. Prostudovat si podrobně tento soubor mohu učitě doporučit, neboť je to vlastně zároveň sbírka řešených příkladů v jazyce Haskell. Dříve než ale začnete studovat implementaci konkrétních funkcí, vyzkoušejte si je napsat nejprve sami. Tím si jednak lépe uvědomíte, co tyto funkce dělají, jednak získáte k vašemu řešení zároveň také zpětnou kontrolu.

Jednou ze základních funkcí je zjištění délky seznamu, funkce length. Její řešení je typickou ukázkou rekurzivního algoritmu, který se typicky skládá ze dvou variant. Jedna varianta vede na rekurzivní volání téže funkce na řešení stejného problému se seznamem kratším o jeden prvek, druhá varianta je nerekurzivní a definuje ukončení rekurze na triviálním případu nejčastěji prázdného seznamu.

Při sestavování takovéto funkce si musíme obvykle odpovědět na tyto dvě otázky:

V případě výpočtu délky seznamu je zřejmé, že délka prázdného seznamu je 0. Máme-li nějaký seznam xs, jehož délku známe, pak po připojení dalšího prvku na začátek seznamu bude výsledná délka o jedničku větší než byla délka původního seznamu. Tedy:

        length []     = 0             -- triviální případ
        length (x:xs) = 1 + length xs -- rekurze