Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/edumserrano/csharp-functional

csharp-functional provides a set of NuGet packages to drive your coding towards a functional approach as well as enabling Railway Oriented programming
https://github.com/edumserrano/csharp-functional

csharp dotnet functional functional-programming maybe maybe-monad result

Last synced: about 22 hours ago
JSON representation

csharp-functional provides a set of NuGet packages to drive your coding towards a functional approach as well as enabling Railway Oriented programming

Awesome Lists containing this project

README

        

C# Functional
=============

|docs| |licence|

==================================================================== ======================================= ================================================
Description NuGet Build Status
==================================================================== ======================================= ================================================
Maybe monad |maybe-nuget| |maybe-build-status|
Result monad |result-nuget| |result-build-status|
HttpResult monad |http-result-nuget| |http-result-build-status|
Result monad extensions |result-extensions-nuget| |result-extensions-build-status|
HttpResult monad extensions |http-result-extensions-nuget| |http-result-extensions-build-status|
Result monad extensions that transforms them into HttpResult monad |result-extensions-http-result-nuget| |result-extensions-http-result-build-status|
Maybe monad extensions that them into Result monad |maybe-extensions-result-nuget| |maybe-extensions-result-build-status|
Simple application of HttpResult monad |http-result-on-http-client-nuget| |http-result-on-http-client-build-status|
==================================================================== ======================================= ================================================

Intro
=====

This repository started as a learning experience about functional programming concepts. The main trigger was a Pluralsight video from Vladimir Khorikov named `Applying Functional Principles in C# `_.

Installing
=================================================

Installation is performed via NuGet. Example for the Maybe monad NuGet package::

PM> Install-Package MaybeMonad

Building
=================================================

This repository adheres to the `F5 manifesto `_ so you should be able to clone, open in Visual Studio and build.

Documentation
=================================================

For documentation go `here `_.
To understand better the structure of this repository see the section `About the repository `_.

Further material:

* `The Absolute Best Intro to Monads For Software Engineers `_

Licence
=================================================

This project is licensed under the `MIT license `_.

.. |docs| image:: https://readthedocs.org/projects/csharp-functional/badge/?version=latest
:alt: Documentation Status
:scale: 100%
:target: http://csharp-functional.readthedocs.io/en/latest/?badge=latest

.. |licence| image:: https://img.shields.io/github/license/mashape/apistatus.svg
:alt: licence
:scale: 100%
:target: https://github.com/edumserrano/csharp-functional/blob/master/LICENSE

.. |maybe-nuget| image:: https://img.shields.io/nuget/v/MaybeMonad.svg?style=flat
:alt: nuget package
:scale: 100%
:target: https://www.nuget.org/packages/MaybeMonad/

.. |result-nuget| image:: https://img.shields.io/nuget/v/ResultMonad.svg?style=flat
:alt: nuget package
:scale: 100%
:target: https://www.nuget.org/packages/ResultMonad/

.. |http-result-nuget| image:: https://img.shields.io/nuget/v/HttpResultMonad.svg?style=flat
:alt: nuget package
:scale: 100%
:target: https://www.nuget.org/packages/HttpResultMonad/

.. |result-extensions-nuget| image:: https://img.shields.io/nuget/v/ResultMonad.Extensions.svg?style=flat
:alt: nuget package
:scale: 100%
:target: https://www.nuget.org/packages/ResultMonad.Extensions/

.. |http-result-extensions-nuget| image:: https://img.shields.io/nuget/v/HttpResultMonad.Extensions.svg?style=flat
:alt: nuget package
:scale: 100%
:target: https://www.nuget.org/packages/HttpResultMonad.Extensions/

.. |result-extensions-http-result-nuget| image:: https://img.shields.io/nuget/v/ResultMonad.Extensions.HttpResultMonad.svg?style=flat
:alt: nuget package
:scale: 100%
:target: https://www.nuget.org/packages/ResultMonad.Extensions.HttpResultMonad/

.. |maybe-extensions-result-nuget| image:: https://img.shields.io/nuget/v/MaybeMonad.Extensions.ResultMonad.svg?style=flat
:alt: nuget package
:scale: 100%
:target: https://www.nuget.org/packages/MaybeMonad.Extensions.ResultMonad/

.. |http-result-on-http-client-nuget| image:: https://img.shields.io/nuget/v/HttpResultMonad.HttpResultOnHttpClient.svg?style=flat
:alt: nuget package
:scale: 100%
:target: https://www.nuget.org/packages/HttpResultMonad.HttpResultOnHttpClient/

.. |maybe-build-status| image:: https://eduardomserrano.visualstudio.com/_apis/public/build/definitions/19e4afb6-184b-4d8b-a0e5-a108602592b9/35/badge
:alt: build status
:scale: 100%
:target: https://eduardomserrano.visualstudio.com/_apis/public/build/definitions/19e4afb6-184b-4d8b-a0e5-a108602592b9/35/badge

.. |result-build-status| image:: https://eduardomserrano.visualstudio.com/_apis/public/build/definitions/19e4afb6-184b-4d8b-a0e5-a108602592b9/40/badge
:alt: build status
:scale: 100%
:target: https://eduardomserrano.visualstudio.com/_apis/public/build/definitions/19e4afb6-184b-4d8b-a0e5-a108602592b9/40/badge

.. |http-result-build-status| image:: https://eduardomserrano.visualstudio.com/_apis/public/build/definitions/19e4afb6-184b-4d8b-a0e5-a108602592b9/43/badge
:alt: build status
:scale: 100%
:target: https://eduardomserrano.visualstudio.com/_apis/public/build/definitions/19e4afb6-184b-4d8b-a0e5-a108602592b9/43/badge

.. |result-extensions-build-status| image:: https://eduardomserrano.visualstudio.com/_apis/public/build/definitions/19e4afb6-184b-4d8b-a0e5-a108602592b9/41/badge
:alt: build status
:scale: 100%
:target: https://eduardomserrano.visualstudio.com/_apis/public/build/definitions/19e4afb6-184b-4d8b-a0e5-a108602592b9/41/badge

.. |http-result-extensions-build-status| image:: https://eduardomserrano.visualstudio.com/_apis/public/build/definitions/19e4afb6-184b-4d8b-a0e5-a108602592b9/44/badge
:alt: build status
:scale: 100%
:target: https://eduardomserrano.visualstudio.com/_apis/public/build/definitions/19e4afb6-184b-4d8b-a0e5-a108602592b9/44/badge

.. |result-extensions-http-result-build-status| image:: https://eduardomserrano.visualstudio.com/_apis/public/build/definitions/19e4afb6-184b-4d8b-a0e5-a108602592b9/42/badge
:alt: build status
:scale: 100%
:target: https://eduardomserrano.visualstudio.com/_apis/public/build/definitions/19e4afb6-184b-4d8b-a0e5-a108602592b9/42/badge

.. |maybe-extensions-result-build-status| image:: https://eduardomserrano.visualstudio.com/_apis/public/build/definitions/19e4afb6-184b-4d8b-a0e5-a108602592b9/38/badge
:alt: build status
:scale: 100%
:target: https://eduardomserrano.visualstudio.com/_apis/public/build/definitions/19e4afb6-184b-4d8b-a0e5-a108602592b9/38/badge

.. |http-result-on-http-client-build-status| image:: https://eduardomserrano.visualstudio.com/_apis/public/build/definitions/19e4afb6-184b-4d8b-a0e5-a108602592b9/45/badge
:alt: build status
:scale: 100%
:target: https://eduardomserrano.visualstudio.com/_apis/public/build/definitions/19e4afb6-184b-4d8b-a0e5-a108602592b9/45/badge