language-ext - C# functional language extensions - a base class library for functional programming

  •        184

This library uses and abuses the features of C# 6+ to provide a functional 'Base class library', that, if you squint, can look like extensions to the language itself.language-ext is an MIT-licensed open source project. Its ongoing development is made possible thanks to the support by these awesome backers. If you'd like to join them, check out the language-ext Patreon campaign. Or if you'd just like to help support the coffee fund, that is very welcome too!.



Related Projects

learn-fp - learn-by-doing course/tutorial for functional programming on scala

  •    Scala

This course/tutorial was created with purpose to better understand functional programming idioms using Scala language. It covers type classes, monoids, functors, applicatives, monads, traversable/foldable, monad transformers, free monad. Material is structured as set of stub/unimplemented functions/classes and tests for them. Your objective is to make all unit tests green. It is learn-by-doing course. NICTA course was a great and interesting challenge for me to do in Haskell. I think Scala community will benefit from the similar course.

arrow - Functional companion to Kotlin's Standard Library

  •    Kotlin

Λrrow is a library for Typed Functional Programming in Kotlin. Arrow aims to provide a lingua franca of interfaces and abstractions across Kotlin libraries. For this, it includes the most popular data types, type classes and abstractions such as Option, Try, Either, IO, Functor, Applicative, Monad to empower users to write pure FP apps and libraries built atop higher order abstractions.

eff - A functional programming language based on algebraic effects and their handlers.

  •    OCaml

Eff is a functional programming language based on algebraic effects and their handlers. Algebraic effects are a way of adding computational effects to a pure functional setting. In a technical sense they are subsumed by the monadic approach to computational effects, but they offer new ways of programming that are not easily achieved with monads. In particular, algebraic effects are combined seamlessly, whereas monad transformers are needed in the monadic style.

FStar - Verification system for effectful programs

  •    OCaml

The F* tutorial provides a first taste of verified programming in F*, explaining things by example. The F* wiki contains additional, usually more in-depth, technical documentation on F*.

FSharpPlus - Extensions for F#

  •    F#

A complete and extensible base library for F#. In the Sample folder you can find scripts showing how to use F#+ in your code.

Vavr - Object-functional language extension to Java

  •    Java

Vavr is an object-functional language extension to Java 8, which aims to reduce the lines of code and increase code quality. It provides persistent collections, functional abstractions for error handling, concurrent programming, pattern matching and much more.

eff - Eff monad for cats -

  •    Scala

Extensible effects are an alternative to monad transformers for computing with effects in a functional way. This library is based on the "free-er" monad and extensible effects described in Oleg Kiselyov in Freer monads, more extensible effects. You can also check out this presentation at flatMap Oslo 2016 (slides).

msgpack-cli - MessagePack implementation for Common Language Infrastructure /[C#]

  •    CSharp

This is MessagePack serialization/deserialization for CLI (Common Language Infrastructure) implementations such as .NET Framework, Silverlight, Mono (including Moonlight.) This library can be used from ALL CLS compliant languages such as C#, F#, Visual Basic, Iron Python, Iron Ruby, PowerShell, C++/CLI or so.Install Visual Studio 2017 (Community edition is OK) and 2015 (for MsgPack.Windows.sln).

cyclops-react - An advanced, but easy to use, platform for writing functional applications in Java 8

  •    Java

Powerful Streams and functional data types for building modern Java 8 applications. We extend JDK interfaces where possible for maximum integration.ReactiveSeq extends JDK Stream and offers multiple modes of execution - synchonous, asynchronous, asynchronous with backpressure, parallel and more.

witchcraft - Monads and other dark magic for Elixir

  •    Elixir

Witchcraft is a library providing common algebraic and categorical abstractions to Elixir. Monoids, functors, monads, arrows, categories, and other dark magic right at your fingertips. You shouldn't have to learn another language just to understand powerful abstractions! By enabling people to use a language that they already know, and is already in the same ballpark in terms of values (emphasis on immutability, &c), we can teach and learn faster.

TensorFlowSharp - TensorFlow API for .NET languages

  •    CSharp

This surfaces the C API as a strongly-typed .NET API for use from C# and F#.The API binding is pretty much done, and at this point, I am polishing the API to make it more pleasant to use from C# and F# and resolving some of the kinks and TODO-items that I left while I was doing the work.

immutable-ext - fantasyland extensions for immutablejs

  •    Javascript

Plus stuff that builds off of reduce like foldMap. Please contribute/complain as you want/need things.

flow-static-land - Implementation of common algebraic types in JavaScript + Flow

  •    Javascript

The idea (faking higher kinded types in Flow) is based on the paper Lightweight higher-kinded polymorphism and elm-brands.

Eta - A powerful language for building scalable systems on the JVM

  •    Haskell

Eta is a pure, lazy, strongly typed functional programming language on the JVM. It is a dialect of Haskell on the JVM. It is pure by default which means that calling a function with the same arguments will yield the same results every time. It is lazy by default which means that data stays in unevaluated state until a function needs to peek inside.

M<'a> Lib (F#/C# Monads Library)

  •    CSharp

Unified collection of Monads (M, unit, *) implemented in the Microsoft F# Language.

fo - An experimental language which adds functional programming features to Go.

  •    Go

Fo is an experimental language which adds functional programming features to Go. The name is short for "Functional Go". Go already supports many features that functional programmers might want: closures, first-class functions, errors as values, etc. The main feature (and in fact only feature for now) that Fo adds is type polymorphism via generics. Generics encourage functional programming techniques by making it possible to write flexible higher-order functions and type-agnostic data structures.

immutable - Immutable collections for Go

  •    Go

This repository contains immutable collection types for Go. It includes List, Map, and SortedMap implementations. Immutable collections can provide efficient, lock free sharing of data by requiring that edits to the collections return new collections. The collection types in this library are meant to mimic Go built-in collections such asslice and map. The primary usage difference between Go collections and immutable collections is that immutable collections always return a new collection on mutation so you will need to save the new reference.

The-Spiral-Language - Functional language with intensional polymorphism and first-class staging.

  •    F#

As the world inexorably hurls towards the black maw of tomorrow, the power to face it is needed. Throughout the history of programming languages, the choice was between fast or expressive; the two traditions are crystallized by the C and the Lisp family of languages. There has been a lot of effort into this, but always as languages developed and moved forward they stepped away from the bare metal and in turn lost some of that core vitality that is needed for performance.

lux - The Lux Programming Language

  •    Clojure

Lux is a new programming language in the making. It's meant to be a functional, statically-typed Lisp that will run on several platforms, such as the Java Virtual Machine and JavaScript interpreters.

IfSharp - F# for Jupyter Notebooks

  •    Jupyter

This is the F# implementation for Jupyter. View the Feature Notebook for some of the features that are included.You can use Jupyter F# Notebooks for free (with free server-side execution) at Azure Notebooks. If you select "Show me some samples", then there is an "Introduction to F#" which guides you through the language and its use in Jupyter.