All Projects → DavidArno → Succinct

DavidArno / Succinct

Licence: other
Discriminated unions, pattern matching and partial applications for C#

Projects that are alternatives of or similar to Succinct

Elm Ts
A porting to TypeScript featuring fp-ts, rxjs6 and React
Stars: ✭ 230 (-8%)
Mutual labels:  functional-programming
Friendup
Friend OS is the Internet Operating System for any device, running on posix compatible hosts. Also known as the Friend Unifying Platform.
Stars: ✭ 241 (-3.6%)
Mutual labels:  stable
Never
Never: statically typed, embeddable functional programming language.
Stars: ✭ 248 (-0.8%)
Mutual labels:  functional-programming
Bash Fun
Functional programming in bash
Stars: ✭ 232 (-7.2%)
Mutual labels:  functional-programming
Cats Mtl
cats transformer type classes.
Stars: ✭ 238 (-4.8%)
Mutual labels:  functional-programming
Phunctional
⚡️ λ PHP functional library focused on simplicity and performance
Stars: ✭ 243 (-2.8%)
Mutual labels:  functional-programming
Arturo
Simple, expressive & portable programming language for efficient scripting
Stars: ✭ 225 (-10%)
Mutual labels:  functional-programming
Funcparserlib
Recursive descent parsing library for Python based on functional combinators
Stars: ✭ 250 (+0%)
Mutual labels:  functional-programming
Cats Tagless
Library of utilities for tagless final encoded algebras
Stars: ✭ 238 (-4.8%)
Mutual labels:  functional-programming
Suddi.github.io
A static single-page application resume-builder developed using React.js and JSON Resume schema (https://suddi.io/)
Stars: ✭ 246 (-1.6%)
Mutual labels:  functional-programming
Shell Novice
The Unix Shell
Stars: ✭ 234 (-6.4%)
Mutual labels:  stable
Unchanged
A tiny, fast, unopinionated handler for updating JS objects and arrays immutably
Stars: ✭ 237 (-5.2%)
Mutual labels:  functional-programming
Fsharp
The F# compiler, F# core library, F# language service, and F# tooling integration for Visual Studio
Stars: ✭ 2,966 (+1086.4%)
Mutual labels:  functional-programming
Poica
🧮 A research programming language on top of C macros
Stars: ✭ 231 (-7.6%)
Mutual labels:  functional-programming
Formatting
Type-safe, functional string formatting in Swift.
Stars: ✭ 248 (-0.8%)
Mutual labels:  functional-programming
Curryhoward
Automatic code generation for Scala functions and expressions via the Curry-Howard isomorphism
Stars: ✭ 229 (-8.4%)
Mutual labels:  functional-programming
Ink
Ink is a minimal programming language inspired by modern JavaScript and Go, with functional style.
Stars: ✭ 243 (-2.8%)
Mutual labels:  functional-programming
Shen Sources
The Official Shen Sources
Stars: ✭ 248 (-0.8%)
Mutual labels:  functional-programming
Rich Hickey Fanclub
"every time I watch one of his talks I feel like someone has gone in and organized my brain"
Stars: ✭ 2,815 (+1026%)
Mutual labels:  functional-programming
Pratica
🥃 Functional Algebraic Data Types
Stars: ✭ 246 (-1.6%)
Mutual labels:  functional-programming

Succinc<T>

Discriminated unions, pattern matching and partial applications for C#

Current project status

Status
Master branch Build Status (master)
Current release NuGet

Overview

Succinc<T> is a .NET library that adds a number of functional features to C#:

  • Discriminated unions,
  • Pattern matching,
  • Partial applications,
  • "Implicitly" typed lambdas,
  • The ability to treat void methods as Unit functions,
  • Replacements for TryParse methods that return an Option<T> (or Maybe<T>, if you prefer), rather than using the out parameter anti-pattern.
  • "cons" support for IEnumerable<T> (add elements to the head of an enumeration, or split an enumeration into its head element and an enumeration containing the remaining items, all without repeatedly enumerating that enumerable).
  • Cycle() methods that endlessly repeat an enumeration or array, again without repeatedly enumerating that enumerable).
  • Replacements for IEnumerable<T>'s XXXOrDefault methods that return an Option<T> (or Maybe<T>, if you prefer), avoiding null and the "did it return a value, or the default?" problem,
  • And finally, as an experimental feature at this stage, forward pipe support.

For more details of each of these feature, please refer to the wiki.

Serialization

V2.2.0 saw the introduction of of JSON.Net serialization support for Succinc<T>. Using the Succinc<T> serializers, all types can now be correctly serialized/deserialized to JSON.

For details, see the Serializing to JSON wiki page.

Current Release

The current release of Succinc<T> is v4.0.0, which is available as a nuget package that supports .NET 4.6.1+, .NET Core v2.0+ and numerous other frameworks (.NET Standard 2.0).

This release also includes SuccincT.Json v4.0.0, which is available as a separate nuget package that supports .NET 4.6.1+, .NET Core v2.0+ and numerous other frameworks (.NET Standard 2.0). SuccincT.Json is dependent on Succinc<T>, so will pull that package in as part of the install. Also, please note that this nuget package is also dependent on the Newtonsoft.JSON v12.0+ nuget package.

What's planned?

The next release is expected to be v4.1.0. For details of what planned, please see the SuccincT Roadmap for details.

Forking and Contributing

If you wish to fork this repo and build it on your own machine, please refer to the Branches page for details of the currently active branches.

If you wish to contribute in any way (from saying "hi" to submitting a PR), please refer to the Contributing page.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].