| dc.contributor.advisor | Hric, Jan | |
| dc.creator | Šefl, Vít | |
| dc.date.accessioned | 2017-06-02T07:11:41Z | |
| dc.date.available | 2017-06-02T07:11:41Z | |
| dc.date.issued | 2016 | |
| dc.identifier.uri | http://hdl.handle.net/20.500.11956/83046 | |
| dc.description.abstract | Šablonový systém jazyka C++ je natolik expresivní, že umožňuje napsat programy, které se vyhodnocují již během kompilace. Toho se dá využít například v generickém programování. Tyto programy jsou ale často náročné na psaní, čtení i údržbu. Navrhneme proto jednoduchý překlad z lambda kalkulu právě do C++ šablon a ukážeme, jak jej lze využít pro zjednodušení takovýchto metaprogramů. K této variantě lambda kalkulu dále přidáme Hindley-Milnerovo typový systém, Haskell syntaxi, uživatelsky definované datové typy, nástroje pro interakci se stávajícími šablonovými programy atp. Nakonec vytvoříme kompilátor, který je schopen transformovat programy psané v tomto jazyce do šablonových metaprogramů v C++. Powered by TCPDF (www.tcpdf.org) | cs_CZ |
| dc.description.abstract | The template system of C++ is expressive enough to allow the programmer to write programs which are evaluated during compile time. This can be exploited for example in generic programming. However, these programs are very often hard to write, read and maintain. We introduce a simple translation from lambda calculus into C++ templates and show how it can be used to simplify C++ metaprograms. This variation of lambda calculus is then extended with Hindley-Milner type system and various other features (Haskell-like syntax, user-defined data types, tools for interaction with existing C++ template code and so on). We then build a compiler capable of transforming programs written in this language into C++ template metaprograms. Powered by TCPDF (www.tcpdf.org) | en_US |
| dc.language | English | cs_CZ |
| dc.language.iso | en_US | |
| dc.publisher | Univerzita Karlova, Matematicko-fyzikální fakulta | cs_CZ |
| dc.subject | C++ Haskell metaprogramování lambda kalkulus | cs_CZ |
| dc.subject | C++ Haskell metaprogramming lambda calculus | en_US |
| dc.title | λ-calculus as a Tool for Metaprogramming in C++ | en_US |
| dc.type | diplomová práce | cs_CZ |
| dcterms.created | 2016 | |
| dcterms.dateAccepted | 2016-09-12 | |
| dc.description.department | Department of Theoretical Computer Science and Mathematical Logic | en_US |
| dc.description.department | Katedra teoretické informatiky a matematické logiky | cs_CZ |
| dc.description.faculty | Matematicko-fyzikální fakulta | cs_CZ |
| dc.description.faculty | Faculty of Mathematics and Physics | en_US |
| dc.identifier.repId | 171865 | |
| dc.title.translated | Lambda-kalkul jako nástroj pro metaprogramování v C++ | cs_CZ |
| dc.contributor.referee | Kratochvíl, Miroslav | |
| dc.identifier.aleph | 002103277 | |
| thesis.degree.name | Mgr. | |
| thesis.degree.level | navazující magisterské | cs_CZ |
| thesis.degree.discipline | Teoretická informatika | cs_CZ |
| thesis.degree.discipline | Theoretical Computer Science | en_US |
| thesis.degree.program | Informatika | cs_CZ |
| thesis.degree.program | Computer Science | en_US |
| uk.thesis.type | diplomová práce | cs_CZ |
| uk.taxonomy.organization-cs | Matematicko-fyzikální fakulta::Katedra teoretické informatiky a matematické logiky | cs_CZ |
| uk.taxonomy.organization-en | Faculty of Mathematics and Physics::Department of Theoretical Computer Science and Mathematical Logic | en_US |
| uk.faculty-name.cs | Matematicko-fyzikální fakulta | cs_CZ |
| uk.faculty-name.en | Faculty of Mathematics and Physics | en_US |
| uk.faculty-abbr.cs | MFF | cs_CZ |
| uk.degree-discipline.cs | Teoretická informatika | cs_CZ |
| uk.degree-discipline.en | Theoretical Computer Science | en_US |
| uk.degree-program.cs | Informatika | cs_CZ |
| uk.degree-program.en | Computer Science | en_US |
| thesis.grade.cs | Výborně | cs_CZ |
| thesis.grade.en | Excellent | en_US |
| uk.abstract.cs | Šablonový systém jazyka C++ je natolik expresivní, že umožňuje napsat programy, které se vyhodnocují již během kompilace. Toho se dá využít například v generickém programování. Tyto programy jsou ale často náročné na psaní, čtení i údržbu. Navrhneme proto jednoduchý překlad z lambda kalkulu právě do C++ šablon a ukážeme, jak jej lze využít pro zjednodušení takovýchto metaprogramů. K této variantě lambda kalkulu dále přidáme Hindley-Milnerovo typový systém, Haskell syntaxi, uživatelsky definované datové typy, nástroje pro interakci se stávajícími šablonovými programy atp. Nakonec vytvoříme kompilátor, který je schopen transformovat programy psané v tomto jazyce do šablonových metaprogramů v C++. Powered by TCPDF (www.tcpdf.org) | cs_CZ |
| uk.abstract.en | The template system of C++ is expressive enough to allow the programmer to write programs which are evaluated during compile time. This can be exploited for example in generic programming. However, these programs are very often hard to write, read and maintain. We introduce a simple translation from lambda calculus into C++ templates and show how it can be used to simplify C++ metaprograms. This variation of lambda calculus is then extended with Hindley-Milner type system and various other features (Haskell-like syntax, user-defined data types, tools for interaction with existing C++ template code and so on). We then build a compiler capable of transforming programs written in this language into C++ template metaprograms. Powered by TCPDF (www.tcpdf.org) | en_US |
| uk.file-availability | V | |
| uk.publication.place | Praha | cs_CZ |
| uk.grantor | Univerzita Karlova, Matematicko-fyzikální fakulta, Katedra teoretické informatiky a matematické logiky | cs_CZ |
| dc.identifier.lisID | 990021032770106986 | |