Informácie o predmete

Obsahom predmetu Teória typov je úvod do základných pojmov, definícii, vlastnosti a technik používaných v typových systémoch.

Ciele predmetu:

  • teoreticky - osvojiť si základne princípy a formálne prístupy používane v teórii typov,
  • pragmaticky - použitie typových systémov v programovacích jazykoch a prekladačoch.

Použite metódy:

  • výpočtový základ tvorí λ-kalkul,
  • pri každej konštrukcii jazyka λ-kalkulu nás zaujíma:
    • motivácia - pre čo bola konstrukcia zavedena,
    • syntax, typovanie a sémantika,
    • otázky implementácie z hladiska navrhu kontroly resp. odvodenia typov.

Stručná osnova predmetu:

  1. Základné pojmy teórie typov.
  2. Netypovaný jazyk čísel a pravdivostných hodnôt, NBL.
  3. Netypovaný λ-kalkul.
  4. Typovaný NBL.
  5. Jednoducho typovaný lambda kalkul.
  6. Odvodené tvary termov.
  7. Súčinové a súčtové typy.
  8. Rekurzia a rekurzívne typy.
  9. Referenčné typy.
  10. Výnimočné situácie.
  11. Podtypy.
  12. Závislé typy.
  13. Polymorfné typy.
  14. Typová rekonštrukcia - odvodenie typu.
  15. Systém F, Let polymorfizmus

Organizácia predmetu

  • Pre úspešné absolvovanie predmetu je potrebné získať minimálne 16 bodov z 30 v priebežnom hodnotení a minimálne 36 bodov zo 70 v rámci skúšky.

Zápočet

  • 30 bodov.

Skúška

  • 70 bodov.

Vyučujúci

Garant predmetu:

Prednášky a cvičenia:

Odporúčaná literatúra:

  1. B.C.Pierce: Types and programming languages, MIT Press, Cambridge, 2001 (Перевод на русский язык: Бенджамин Пирс. Типы в языках программирования. — Добросвет, 2012. — 680 с. — ISBN 978-5-7913-0082-9)
  2. B.C.Pierce et al.: Software Foundations, Electronic textbook, 2024
  3. Valerie Novitzká, Daniel Mihályi: Teória typov, TU Košice, 2015
  4. J.-Y. Girard: Proofs and types, Cambridge Univ.Press, 1989
  5. J.R.Hindley: Basic simple type theory, Cambridge Univ.Press, 1997
  6. R.Sethi: Programming Languages, WileyaSons, 1996
  7. W.Horowitz: Higher-order Programming Languages, WileyaSons, 1982
  8. Введение. Функциональное и императивное программирование: Computer Science Center, 2015