Název:
Knihovna rozšiřující jazyk C# o podporu konceptů funkcionálního programování
Překlad názvu:
Extending C# with a Library of Functional Programming Concepts
Autoři:
Ćerim, Harun ; Parízek, Pavel (vedoucí práce) ; Ježek, Pavel (oponent) Typ dokumentu: Diplomové práce
Rok:
2020
Jazyk:
eng
Abstrakt: [eng][cze] 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.Hlavní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.
Klíčová slova:
asynchronní programování; csharp; funkční programování; monády; teorie kategorií; asynchronous programming; category theory; csharp; functional programming; monads