Functional programming library for C#

Funk is intended for developers with a primarily object-oriented background who are interested in exploring and using concepts present in functional programming languages like F# and Scala and the benefits they bring to day-to-day software development.

The main goal of Funk is to provide the necessary support to shift your mindset to more of a functional way of thinking and reasoning about code. It provides features that can help with many problems, some of which we face constantly, that impact our codebase making it bigger and harder to maintain. It helps developers reduce the code size by abstracting away common problems and scenarios and enables us to be more expressive and to completely forget about statements and imperative style of programming.

Funk introduces new types as well as various kinds of extensions together with the functional Prelude (a module that contains a set of helper definition functions).

This documentation will try to explain these concepts in a way that a developer without a mathematical background can easily grasp and understand the benefits that they bring. However, having basic functional programming knowledge can be quite helpful.