C# is a very flexible language, but that flexibility also makes it easy for side effects and mutable state to spread through a codebase.

I built PureSharp to bring a few functional-programming ideas into everyday C# development and make them enforceable at compile time.

GitHub: https://github.com/mao2009/PureSharp

NuGet: https://www.nuget.org/packages/loach.PureSharp

What PureSharp tries to enforce