This is an exercise to develop a simple poker scoring application using functional techniques in c#.
Not 100% of all code is purely functional, but it's as close as makes sense for me for what's available in the language.
All primitives are record or record-style classes that have init and read only properties. In a team, this can help keep code functional for longer.
The CSharpFunctionalExtensions is for an immutable base class with control over deep equality. Unfortunately records don't allow overwriting the equality operator for handling nested classes (like a nested List or HashSet in this example).
This is a modification of the principles presented in this walk-though.
- Install dotnet core cli
- Restore packages
dotnet restore
Run project normally with dotnet run
Run all tests with dotnet test