Let polymorfizmus a Systém F

Ciele

  1. Let polymorfizmus
  2. 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.