λ-calculus as a Tool for Metaprogramming in C++
| Název práce v češtině: | Lambda-kalkul jako nástroj pro metaprogramování v C++ |
|---|---|
| Název v anglickém jazyce: | λ-calculus as a Tool for Metaprogramming in C++ |
| Klíčová slova: | C++ Haskell metaprogramování lambda kalkulus |
| Klíčová slova anglicky: | C++ Haskell metaprogramming lambda calculus |
| Akademický rok vypsání: | 2015/2016 |
| Typ práce: | diplomová práce |
| Jazyk práce: | angličtina |
| Ústav: | Katedra teoretické informatiky a matematické logiky (32-KTIML) |
| Vedoucí / školitel: | RNDr. Jan Hric |
| Řešitel: | skrytý - zadáno a potvrzeno stud. odd. |
| Datum přihlášení: | 28.10.2015 |
| Datum zadání: | 14.04.2016 |
| Datum potvrzení stud. oddělením: | 03.05.2016 |
| Datum a čas obhajoby: | 12.09.2016 12:00 |
| Datum odevzdání elektronické podoby: | 23.07.2016 |
| Datum odevzdání tištěné podoby: | 28.07.2016 |
| Datum proběhlé obhajoby: | 12.09.2016 |
| Oponenti: | RNDr. Miroslav Kratochvíl, Ph.D. |
| Zásady pro vypracování |
| Lambda kalkul s typy [3] tvoří teoretický základ pro typované funkcionální jazyky, napr. Haskell. Jejich typování je založeno na tzv. Hindley-Milnerově typovém systému [4] a jeho rozšířeních.
Myšlenky bohatých typových systémů byly přeneseny do objektově-orientovaného programování, např. do jazyka C++ [1], [2]. Tam lze s využitím šablon (Templates) psát stručnější, efektivnější a/anebo obecnější programy, které část výpočtů vykonávají na úrovni typového systému, tj. v čase kompilace. Součástí těchto výpočtů je také metaprogramování, tj. transformace a generování specializovaných zdrojových kódů pro další překlad. Práce rozebere možnosti překladu lambda kalkulu a/anebo konstrukcí z funkcionálních jazyků do šablon C++ a popíše využití těchto technik a šablon v C++ při programování a metaprogramování. |
| Seznam odborné literatury |
| [1] David Abrahams, Aleksey Gurtovoy, C++ Template metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond. Addison Wesley Professional, 2004. ISBN 0-321-22725-5
[2] Andrei Alexandrescu, Modern C++ Design: Generic Programming and Design Patterns Applied. Addison Wesley, 2001. ISBN 0-201-70431-5 [3] Henk Barendregt: Lambda Calculi with Types. Handbook of Logic in Computer Science, Vol II. Oxford University Press, 1992, pp. 117-309. [4] Robin Milner, A theory of type polymorphism in programming. Journal of Computer and System Sciences, vol 17, č.3, 1978, Elsevier, pp 348-375 |
- zadáno a potvrzeno stud. odd.