Show simple item record

Lambda-kalkul jako nástroj pro metaprogramování v C++
dc.contributor.advisorHric, Jan
dc.creatorŠefl, Vít
dc.date.accessioned2017-06-02T07:11:41Z
dc.date.available2017-06-02T07:11:41Z
dc.date.issued2016
dc.identifier.urihttp://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.abstractThe 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.languageEnglishcs_CZ
dc.language.isoen_US
dc.publisherUniverzita Karlova, Matematicko-fyzikální fakultacs_CZ
dc.subjectC++ Haskell metaprogramování lambda kalkuluscs_CZ
dc.subjectC++ Haskell metaprogramming lambda calculusen_US
dc.titleλ-calculus as a Tool for Metaprogramming in C++en_US
dc.typediplomová prácecs_CZ
dcterms.created2016
dcterms.dateAccepted2016-09-12
dc.description.departmentDepartment of Theoretical Computer Science and Mathematical Logicen_US
dc.description.departmentKatedra teoretické informatiky a matematické logikycs_CZ
dc.description.facultyMatematicko-fyzikální fakultacs_CZ
dc.description.facultyFaculty of Mathematics and Physicsen_US
dc.identifier.repId171865
dc.title.translatedLambda-kalkul jako nástroj pro metaprogramování v C++cs_CZ
dc.contributor.refereeKratochvíl, Miroslav
dc.identifier.aleph002103277
thesis.degree.nameMgr.
thesis.degree.levelnavazující magisterskécs_CZ
thesis.degree.disciplineTeoretická informatikacs_CZ
thesis.degree.disciplineTheoretical Computer Scienceen_US
thesis.degree.programInformatikacs_CZ
thesis.degree.programComputer Scienceen_US
uk.thesis.typediplomová prácecs_CZ
uk.taxonomy.organization-csMatematicko-fyzikální fakulta::Katedra teoretické informatiky a matematické logikycs_CZ
uk.taxonomy.organization-enFaculty of Mathematics and Physics::Department of Theoretical Computer Science and Mathematical Logicen_US
uk.faculty-name.csMatematicko-fyzikální fakultacs_CZ
uk.faculty-name.enFaculty of Mathematics and Physicsen_US
uk.faculty-abbr.csMFFcs_CZ
uk.degree-discipline.csTeoretická informatikacs_CZ
uk.degree-discipline.enTheoretical Computer Scienceen_US
uk.degree-program.csInformatikacs_CZ
uk.degree-program.enComputer Scienceen_US
thesis.grade.csVýborněcs_CZ
thesis.grade.enExcellenten_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.enThe 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-availabilityV
uk.publication.placePrahacs_CZ
uk.grantorUniverzita Karlova, Matematicko-fyzikální fakulta, Katedra teoretické informatiky a matematické logikycs_CZ


Files in this item

Thumbnail
Thumbnail
Thumbnail
Thumbnail
Thumbnail
Thumbnail
Thumbnail

This item appears in the following Collection(s)

Show simple item record


© 2017 Univerzita Karlova, Ústřední knihovna, Ovocný trh 560/5, 116 36 Praha 1; email: admin-repozitar [at] cuni.cz

Za dodržení všech ustanovení autorského zákona jsou zodpovědné jednotlivé složky Univerzity Karlovy. / Each constituent part of Charles University is responsible for adherence to all provisions of the copyright law.

Upozornění / Notice: Získané informace nemohou být použity k výdělečným účelům nebo vydávány za studijní, vědeckou nebo jinou tvůrčí činnost jiné osoby než autora. / Any retrieved information shall not be used for any commercial purposes or claimed as results of studying, scientific or any other creative activities of any person other than the author.

DSpace software copyright © 2002-2015  DuraSpace
Theme by 
@mire NV