Témata prací (Výběr práce)Témata prací (Výběr práce)(verze: 393)
Detail práce
   
λ-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
 
Univerzita Karlova | Informační systém UK