Extending C# with a Library of Functional Programming Concepts
Knihovna rozšiřující jazyk C# o podporu konceptů funkcionálního programování
diplomová práce (OBHÁJENO)
Zobrazit/ otevřít
Trvalý odkaz
http://hdl.handle.net/20.500.11956/121344Identifikátory
SIS: 223566
Kolekce
- Kvalifikační práce [10690]
Autor
Vedoucí práce
Oponent práce
Ježek, Pavel
Fakulta / součást
Matematicko-fyzikální fakulta
Obor
Softwarové a datové inženýrství
Katedra / ústav / klinika
Katedra distribuovaných a spolehlivých systémů
Datum obhajoby
16. 9. 2020
Nakladatel
Univerzita Karlova, Matematicko-fyzikální fakultaJazyk
Angličtina
Známka
Velmi dobře
Klíčová slova (česky)
csharp, funkční programování, teorie kategorií, monády, asynchronní programováníKlíčová slova (anglicky)
csharp, functional programming, category theory, monads, asynchronous programmingHlavním cílem této diplomové práce bylo zavedení funkční programovací (FP) knihovny s názvem Funk, která rozšiřuje C# s podporou konceptů přítomných ve funkčních programovacích jazycích, jako jsou F# a Scala. Funk využívá mnoho funkčních programovacích konceptů, včetně neměnnosti, sladění vzorů a různých typů monád, společně se silnějším psaním. Zavedení těchto konceptů do jazyka C# pomáhá vyhnout se mnoha chybám v běhu a vzorovému kódu a také umožňuje vývojářům psát kód C# deklarativně, nikoli imperativně, což usnadňuje každodenní vývoj softwaru a snižuje náchylnost k chybám. Kromě toho diplomová práce analyzuje a porovnává Funk se stávajícími funkčními programovacími knihovnami, jako je Language-ext a FuncSharp. Nakonec analyzuje nové funkce C# 8, které zahrnují nulovatelné typy odkazů a sladění vzorů a porovnává je s funkcemi knihovny Funk.
The main goal of this thesis was to implement a functional programming (FP) library named Funk that extends C# with support for concepts present in functional programming languages, such as F# and Scala. Funk utilizes many functional programming concepts, including immutability, pattern matching, and various types of monads, together with stronger typing. Introduction of these concepts into C# helps in avoiding many runtime errors and boilerplate code, and it also lets developers write C# code in a declarative rather than in an imperative way, making the day-to-day software development easier and less error-prone. Additionally, the thesis analyzes and compares Funk with existing functional programming libraries such as Language-ext and FuncSharp. Finally, it analyzes the new features of C# 8, which include nullable reference types and pattern matching and compares them with the functionalities of the Funk library.