Functional reactive programming for web applications
Functional reactive programming for web applications
bakalářská práce (OBHÁJENO)
Zobrazit/ otevřít
Trvalý odkaz
http://hdl.handle.net/20.500.11956/50602Identifikátory
SIS: 96231
Kolekce
- Kvalifikační práce [10690]
Autor
Vedoucí práce
Oponent práce
Hric, Jan
Fakulta / součást
Matematicko-fyzikální fakulta
Obor
Obecná informatika
Katedra / ústav / klinika
Katedra teoretické informatiky a matematické logiky
Datum obhajoby
7. 9. 2011
Nakladatel
Univerzita Karlova, Matematicko-fyzikální fakultaJazyk
Angličtina
Známka
Výborně
Klíčová slova (česky)
Funkcionálně reaktivní programování, Haskell, Web, JavaScriptKlíčová slova (anglicky)
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.