Ciele
- Odvodené tvary termov - väzba let
- Binárny súčinový typ - dvojica
- Súčinový typ $n$ -typov - $n$-tica
- Súčinový typ $n$ -typov s pomenovanými návesťami - Záznam
Postup
Krok 1
Odvodené tvary termov - väzba let
Úloha 1.1
Majme daný nasledujúci term: $$let\ x = t_1\ in\ t_2:Nat,$$ kde: $$ \begin{array}{l} t_1 = and\ true\ false \\ t_2 = if\ x\ then\ succ\ 0\ else\ succ\ (succ\ 0) \end{array} $$ a $$\Gamma = \{and: Bool \to Bool \to Bool \}$$
- Overte či je správne typovaný v typovom kontexte $\Gamma$.
- Ak je term správne typovaný, vyhodnoťte ho.
Krok 2
Dvojica: Binárny súčinový typ
Úloha 2.1
Majme daný nasledujúci term: $$ \langle\ pred\ 3, if\ iszero\ 0\ then\ succ\ 0\ else\ succ\ (succ\ 0)\ \rangle.1 $$
- Overte či je správne typovaný v prázdnom typovom kontexte.
- Vyhodnoťte ho (ak je správne typovaný).
Úloha 2.2
Majme daný nasledujúci term: $$ (\lambda x: Nat \times Nat. x.2)\ \ \langle\ pred\ 3, if\ iszero\ 0\ then\ succ\ 0\ else\ succ\ (succ\ 0)\ \rangle : Nat $$
- Overte či je správne typovaný v prázdnom typovom kontexte.
- Vyhodnoťte ho (ak je správne typovaný).
Krok 3
$n$-tica - Súčinový typ $n$-typov*
Úloha 3.1
- Definujte typ súradnica. ktorý bude pozostávať z bodov $x$ a $y$.
- Definujte typ obdĺžnik, ktorý bude definovaný jeho uhlopriečkou.
- Napíšte funkcie, ktoré vrátia obsah obdĺžnika (v prípade potreby definujte pomocné funkcie).
- Definujte term typu obdĺžnik.
- Aplikujte funkciu pre výpočet obsahu z bodu 3. na term z bodu 4 a následne:
- overte či je takýto term správne typovaný,
- ak áno, vyhodnoťte ho.
Krok 4
Záznam: Súčinový typ $n$-typov s pomenovanými návesťami
Úloha 4.1
- Definujte záznamový typ "Kniha", ktorý bude obsahovať položky:
- autor,
- titul,
- cena.
- Napíšte funkcie, ktoré vrátia autora, titul a cenu.
- Definujte 3 termy typu kniha.
- Aplikujte funkcie z kroku 2. na termy z kroku 3.
- Definujte typ záznam pre zoznam troch kníh.
- Definujte term typu zoznam troch kníh využitím termov z kroku 3.
- Napíšte funkciu, ktorá vráti najlacnejšiu knihu zo zoznamu.
- Aplikujte funkciu z kroku 7. na term z kroku 6.