λ-calculus as a Tool for Metaprogramming in C++
Thesis title in Czech: | Lambda-kalkul jako nástroj pro metaprogramování v C++ |
---|---|
Thesis title in English: | λ-calculus as a Tool for Metaprogramming in C++ |
Key words: | C++ Haskell metaprogramování lambda kalkulus |
English key words: | C++ Haskell metaprogramming lambda calculus |
Academic year of topic announcement: | 2015/2016 |
Thesis type: | diploma thesis |
Thesis language: | angličtina |
Department: | Department of Theoretical Computer Science and Mathematical Logic (32-KTIML) |
Supervisor: | RNDr. Jan Hric |
Author: | hidden - assigned and confirmed by the Study Dept. |
Date of registration: | 28.10.2015 |
Date of assignment: | 14.04.2016 |
Confirmed by Study dept. on: | 03.05.2016 |
Date and time of defence: | 12.09.2016 12:00 |
Date of electronic submission: | 23.07.2016 |
Date of submission of printed version: | 28.07.2016 |
Date of proceeded defence: | 12.09.2016 |
Opponents: | RNDr. Miroslav Kratochvíl, Ph.D. |
Guidelines |
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í. |
References |
[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 |