Extending C# with a Library of Functional Programming Concepts
Thesis title in Czech: | Knihovna rozšiřující jazyk C# o podporu konceptů funkcionálního programování |
---|---|
Thesis title in English: | Extending C# with a Library of Functional Programming Concepts |
Key words: | csharp, funkční programování, teorie kategorií, monády, asynchronní programování |
English key words: | csharp, functional programming, category theory, monads, asynchronous programming |
Academic year of topic announcement: | 2019/2020 |
Thesis type: | diploma thesis |
Thesis language: | angličtina |
Department: | Department of Distributed and Dependable Systems (32-KDSS) |
Supervisor: | doc. RNDr. Pavel Parízek, Ph.D. |
Author: | hidden - assigned and confirmed by the Study Dept. |
Date of registration: | 12.03.2020 |
Date of assignment: | 12.03.2020 |
Confirmed by Study dept. on: | 24.03.2020 |
Date and time of defence: | 16.09.2020 09:00 |
Date of electronic submission: | 29.07.2020 |
Date of submission of printed version: | 26.07.2020 |
Date of proceeded defence: | 16.09.2020 |
Opponents: | Mgr. Pavel Ježek, Ph.D. |
Guidelines |
Bugs in software are very common due to mistakes developers make in the source code. For example, in the case of the programs written in the C# programming language, some of the most common exceptions that occur during runtime of the application are System.NullReferenceException and System.InvalidCastException.
The main goal of this thesis project is to implement a library that will extend the C# programming language with support for concepts present in functional programming languages, such as F# and Scala, in order to address the kinds of issues and bugs mentioned above. The library will utilize many functional programming concepts, including immutability, pattern matching and monads, together with stronger typing. Introduction of these concepts into the C# language will help in avoiding many bugs and boilerplate code, and it will also let 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. The following specific tasks should also be performed within the scope of this thesis project: - Analyze and compare this library with existing functional libraries such as language-ext and FuncSharp. - Analyze new features of the C# 8.0 language that include nullable reference types and pattern matching. The library will be released under an open source license. |
References |
1. Paul Louth. language-ext, https://github.com/louthy/language-ext
2. Jan Široký. FuncSharp, https://github.com/siroky/FuncSharp 3. Jon Skeet. C# in Depth - 4th Edition. Manning Publications, 2019, https://www.manning.com/books/c-sharp-in-depth-fourth-edition 4. Enrico Buonanno. Functional Programming in C#. Manning Publications, 2017, https://www.manning.com/books/functional-programming-in-c-sharp 5. Isaac Abraham. Get Programming with F#. Manning Publications, 2018, https://www.manning.com/books/get-programming-with-f-sharp |