Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Branch: master
Failed to load latest commit information.
Build Build script fix for WP7.1
Libs Updates build script for publishing
Src bad symbol ? removed
.gitignore Initial commit License info added

Monads for .NET

Monads for .NET is helpers for C# which makes easier every day of your developer life. Now supports .NET 3.5-4.0, Silverlight 3-5 and Windows Phone 7.

In functional programming, a monad is a programming structure that represents computations. Monads are a kind of abstract data type constructor that encapsulate program logic instead of data in the domain model. A defined monad allows the programmer to chain actions together to build a pipeline to process data in various steps, in which each action is decorated with additional processing rules provided by the monad. Programs written in functional style can make use of monads to structure procedures that include sequenced operations, or to define some arbitrary control flows (like handling concurrency, continuations, side effects such as input/output, or exceptions).

More information about monads at Wikipedia.

Supported platforms

  1. .NET 3.5-4
  2. Silverlight 3-5
  3. WP7
  4. XNA


  1. Just reference "Monads.dll" file and add "using System.Monads;" to your code.
  2. Install via nuget.


PM> Install-Package Monads

Nuget link


I'm glad to see your contributions for Monads.NET. Just fork the project and pull request when you're ready.


Feel free to communicate with me by twitter or e-mail:


Released under the MIT license.

Benefits (code samples)


string workPhoneCode;

if (person != null)
  if (person.Work != null)
    if (person.Work.Phone != null)
       workPhoneCode = person.Work.Phone.Code;


string workPhoneCode = person.With(p=>p.Work).With(w=>w.Phone).With(p=>p.Code);

More info at wiki:

  1. Monads for objects
  2. Monads for collections
  3. Argument checking
  4. Events
Something went wrong with that request. Please try again.