- Pluralsight course by Vladimir Khorikov: Applying Functional Principles in C# <https://app.pluralsight.com/library/courses/csharp-applying-functional-principles/table-of-contents>`_ .
- Vladimir Khorikov’s repository related with the Pluralsight course mentioned above: https://github.com/vkhorikov/CSharpFunctionalExtensions.
- Eric Lippert’s series of articles on monads: https://ericlippert.com/category/monads. It’s composed of thirteen articles and each one helped a lot to understand monads a bit better.
- Wes Dyer article on monads: https://blogs.msdn.microsoft.com/wesdyer/2008/01/10/the-marvels-of-monads. This article is mentioned on Monads, part two <https://ericlippert.com/2013/02/25/monads-part-two/>, the second article in the series and it contains one of the most succinct and easier to grasp definitions about a monad:
- “Another way to look at these generic types (monads) is that they are “amplifiers”. An “amplifier” is something that increases the representational power of their “underlying” type.”
- Another good and not mathematical definition of monad can be found at: http://www.introtorx.com/content/v1.0.10621.0/10_LeavingTheMonad.html. It says:
- “For us, a monad is effectively a programming structure that represents computations. Generally a monadic structure allows you to chain together operators to produce a pipeline, just as we do with our extension methods. Monads are a kind of abstract data type constructor that encapsulate program logic instead of data in the domain model.”
- Scott Wlaschin’s article on Railway Oriented Programming: https://fsharpforfunandprofit.com/rop. As well as the links at the bottom of the article about monads in general.