Functional Programming in C# alternatives and similar packages
Based on the "Books" category.
Alternatively, view Functional Programming in C# alternatives based on common mentions on social networks and blogs.
teaches how to write applications and libraries with .NET Core. [$]
shows you how to build maintainable, secure and operations-friendly microservices using Nancy and .NET Core. [$]
Do you think we are missing an alternative of Functional Programming in C# or a related project?
Functional Programming in C#
This repo contains the code samples, exercises and solutions for the book Functional Programming in C# published by Manning.
The code samples are organized in the following projects:
- Examples: examples used throughout the book, by chapter
- Exercises: placeholders for you to do the exercises, compile and run them; and compare to the provided solutions
- LaYumba.Functional: a functional library that we develop throughout the book
- LaYumba.Functional.Data: very simple functional data structures discussed in Chapter 9
- LaYumba.Functional.Tests: also illustrative of topics explained in the book, and useful to better understand the constructs in the library
- Boc.Domain: an example of using F# for domain objects
Note: you are welcome to reference
LaYumba.Functional from your projects
via NuGet, and submit
PRs with improvements, but the main intent of this library is pedagogical.
For a more fully-fledged functional library, consider LanguageExt
Working with the code samples
The code samples use .NET Standard 1.6 and .NET Core 2.0, and should compile and run on all major OS's
To check this is available, type
dotnet --version at the command prompt, and you should get
2.0.3 or greater
$ git clone [email protected]:la-yumba/functional-csharp-code.git $ cd functional-csharp-code $ dotnet restore
Running the tests
dotnet test command, for example:
$ cd LaYumba.Functional.Tests $ dotnet test
tests in the
Examples projects can be run in the same way.
Many code samples in the book can be run, in case you'd like to debug or "see that it works". The pattern is:
$ cd Examples $ dotnet run Greetings
Setting up the REPL
Throughout the book, I encourage readers to try things out in the REPL.
- If you use Visual Studio, you can start the REPL by going to
View > Other Windows > C# Interactive(short tutorial here)
- On Mono, use the
- There are several other REPLs available, some even run in the browser
You'll often need to import
LaYumba.Functional in the REPL. In C# Interactive,
this can be done like so:
The path above may not work for you, in which case use an absolute path to the dll,
Directory.GetCurrentDirectory() into the REPL to see what to use as a base for a relative path.
Next, add these imports:
using LaYumba.Functional; using static LaYumba.Functional.F;
You're now ready to experiment with functional code right in the REPL, for example:
> Func<int, int, int> plus = (a, b) => a + b; > Some(plus).Apply(1).Apply(2) [Some(3)] > Some(plus).Apply(1).Apply(None) [None]
Doing the exercises
- edit the code in
Exercises/Program.csto start the class you want
- run it with:
$ cd Exercises $ dotnet run
- run your tests:
$ cd Exercises $ dotnet test