Functional reactive programming for web applications
Functional reactive programming for web applications
bachelor thesis (DEFENDED)
View/ Open
Permanent link
http://hdl.handle.net/20.500.11956/50602Identifiers
Study Information System: 96231
Collections
- Kvalifikační práce [11242]
Author
Advisor
Referee
Hric, Jan
Faculty / Institute
Faculty of Mathematics and Physics
Discipline
General Computer Science
Department
Department of Theoretical Computer Science and Mathematical Logic
Date of defense
7. 9. 2011
Publisher
Univerzita Karlova, Matematicko-fyzikální fakultaLanguage
English
Grade
Excellent
Keywords (Czech)
Funkcionálně reaktivní programování, Haskell, Web, JavaScriptKeywords (English)
Functional reactive programming, Haskell, Web, JavaScriptFunkcionálně reaktivní programování umožňuje popis dynamických systémů deklarativním stylem s využitím typové bezpečnosti, což je doména obecně funkcionálních jazyků, zejména pak Haksellu, který jsme zvolili pro implementaci knihovny. Zde zkoumáme cesty, jimiž lze těchto technik využít při programování webových aplikací; konkrétně je zde navržen \emph{domain specific language}, sloužící ke psaní webových stránek jako součást programu napsaného v Haskellu, který nakonec vygeneruje kód určený k odeslání uživateli, a k jejich obohacení o dynamický obsah. Také zjišťujeme, do jaké míry je možné rozšířit vyjadřovací sílu takové knihovny vzhledem k určitým omezením, která jsou daná zvoleným přístupem. Zároveň využijeme i stromovou strukturu HTML stránky, která se vcelku hodí k zápisu přímo v programovacím jazyce a do níž přidáváme další prvky dodávající systému dynamiku a interaktivitu.
Functional reactive programming provides mechanisms of describing dynamic systems in a declarative and type-safe manner, which is traditional domain of functional languages in general and Haskell, which we use here, in particular. We explore ways, in which it may be applied to programming web applications, specifically, we design a domain specific language intended for writing web pages as a part of a Haskell program, which would generate the actual code served to the client, and enriching them with dynamic content; and also find out to what extent we may broaden the expressive power of such library given certain inherent constraints of the chosen method. In doing so, we utilize the tree-like structure of the HTML page, which is quite suitable to be written as a source code in a programming language and to which we embed additional entities providing the dynamics and interactivity.