Ciele
- Let polymorfizmus
- Systém F
Postup
Krok 1
Let polymorfizmus
Úloha 1.1
Pokúste sa nájsť najvšeobecnejší typ termu: $$let\ id=\lambda x.x\ in\ id\ id$$
Úloha 1.2
Pokúste sa nájsť najvšeobecnejší typ termu: $$let\ id=\lambda x.x\ in\ if\ id\ true\ then\ id\ 5\ else\ id\ 8$$
Úloha 1.3
Pokúste sa nájsť najvšeobecnejší typ termu: $$let\ ff=\lambda f.\lambda x.f\ x\ in\ add\ ff\ ff $$ v typovom kontexte: $$\Gamma=\{add:Nat \to Nat \to Nat\}$$
Krok 2
Systém F
Úloha 2.1
Definujte polymorfnú identickú funkciu a jej typ: $$id=... : T$$
- Overte či je správne typovaná.
- Aplikujte ju na vhodné parametre.
Úloha 2.2
Definujte typ $Bool$ ako polymorfný typ a následne definujte:
- hodnoty typu,
- operácie negácie a konjunkcie.
Úloha 2.3
Majme term: $$neg\ true$$
- Overte či je správne typovaný.
- Vyhodnoťte ho.
Úloha 2.4
Majme term: $$and\ true\ false$$
- Overte či je správne typovaný.
- Vyhodnoťte ho.
Úloha 2.5
Definujte typ $Nat$ ako polymorfný typ a následne definujte:
- hodnoty typu,
- operácie nasledovníka a sčítania.
Úloha 2.6
Majme term: $$succ\ 2$$
- Overte či je správne typovaný.
- Vyhodnoťte ho.
Úloha 2.7
Majme term: $$plus\ 1\ 0$$
- Overte či je správne typovaný.
- Vyhodnoťte ho.