Funkcionální programování

Miroslav Beneš

Katedra informatiky FEI VŠB-TU Ostrava

Obsah

Cíl modulu
Pokyny ke studiu
1. Funkcionální jazyky
1.1. Klasifikace programovacích jazyků
1.2. Historie funkcionálních jazyků
1.3. Proč studovat funkcionální programování
2. Lambda kalkul
2.1. Operační sémantika lambda kalkulu
3. Datové typy
3.1. Hodnoty a typy
3.2. Polymorfní typy
4. Funkce
4.1. Lambda abstrakce
4.2. Infixové operátory
4.3. Řezy operátorů
4.3.1. Deklarace druhu operátoru
4.4. Funkce error
5. Seznamy
5.1. Seznamy v Haskellu
5.2. Generátory seznamů
5.3. Základní operace nad seznamy
A. Zadání příkladů pro cvičení
A.1. Implementace operací nad seznamy v C++
A.2. Jednoduché rekurzivní funkce
A.2.1. Faktoriál
A.2.2. Nejmenší společný dělitel
A.2.3. Délka seznamu
A.2.4. Spojení dvou seznamů
A.2.5. Spojení dvou seznamů do seznamu dvojic
A.2.6. Vyhledání největšího prvku v seznamu
A.3. Další funkce nad seznamy
A.3.1. Obrácení seznamu - funkce reverse
A.3.2. Spojeni seznamů pomocí funkce - funkce zipWith
A.3.3. Skalární součin vektorů čísel
A.3.4. Kartézský součin
A.4. Funkce pro práci se stromy
A.4.1. Vyhledání maximální hodnoty ve stromu
A.4.2. Reprezentace aritmetického výrazu uživatelským datovým typem
A.4.3. Vyhodnocení výrazu ve stromové reprezentaci
A.4.4. Převod výrazu ve stromové reprezentaci na řetězec
B. Zadání projektu

Seznam příkladů

2.1.
2.2.
2.3.
2.4.
5.1.
5.2.