Stop vibe-debugging. Every exception, every backtrace, grouped so you see patterns, not noise. Learn more →
Language-ext Alternatives
Similar projects and alternatives to language-ext
-
-
ReSharper
ReSharper is now available in VS Code and Cursor. ReSharper brings a professional toolset for C# developers backed by over 20 years of experience, enterprise-grade security, SOC 2 compliance, and the trust of companies worldwide.
-
-
-
-
-
Avalonia
Develop Desktop, Embedded, Mobile and WebAssembly apps with C# and XAML. The future of .NET UI
-
prql
PRQL is a modern language for transforming data — a simple, powerful, pipelined SQL replacement
-
AppSignal
AppSignal knows why the f*#k it crashed. Stop vibe-debugging. Every exception, every backtrace, grouped so you see patterns, not noise.
-
-
-
VisualFSharp
The F# compiler, F# core library, F# language service, and F# tooling integration for Visual Studio
-
fslang-suggestions
The place to make suggestions, discuss and vote on F# language and core library features
-
-
-
-
-
-
shell-bling-ubuntu
A few scripts to be run on a fresh-off-the-presses Ubuntu VM, in order to get its shell nice 'n purdy.
-
-
-
Curryfy
Provides strongly typed extensions methods for C# delegates to take advantages of functional programming techniques, like currying and partial application.
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
language-ext discussion
language-ext reviews and mentions
- Small Programming Tricks
-
Generic Math in C#: The Complete Guide
language-ext documentation
-
Monads in C# (Part 2): Result
One thing I realised after developing these monadic types was that they're not much use on their own. If your List type's Find method doesn't return Option, then you haven't gained anything.
I see others on here are taking a similar journey to the one I took over a decade ago. There's an obsession over creating Result types (Either and Fin in language-ext, btw) and the other basic monads, but there's no thought as to what comes next.
If you're serious about creating declarative code, then you need an ecosystem that is declarative. And that's why I decided that a project called "csharp-monad" was too limiting, so I started again (language-ext) and I started writing immutable collections, concurrency primitives, parsers, and effect systems (amongst others).
The idea is to make something that initially augments the BCL, then wraps it out of existence. Create a complete C# functional framework ecosystem.
I'm sometimes a little wary about going all in on the evangelism here. C# devs in general tend to 'stick to what they know' and don't always like the new, especially when it's not idiomatic. But I made a decision early on to fuck the norms and focus on making something good on its own terms.
That'll piss some people off, but my aim is for it to be like the Cats or Scalaz community within the larger Scala community.
It's certainly a labour of love right now. But, over a decade later I'm still enjoying it, so it can't be all bad.
(PS Mike, I have new highly optimised Fold functionality coming that is faster than a regular for-loop over an array. Watch this space!)
[1] https://github.com/louthy/csharp-monad
[2] https://github.com/louthy/language-ext
-
LINQ and Learning to Be Declarative
I'm the author of language-ext [1] a pure functional framework for C# and have been pushing the declarative programming thing in C# for over decade. C# is a great language for declarative programming and LINQ is awesome. You need to constrain yourself (and your team) so you don't fall into bad habits, but it can really pay dividends in terms of code stability/maintainability.
I have a couple of samples that I think might surprise you if you think C# must look like Java.
* A game of pontoon [2] - I create a Game monad which is an alias for a monad-transformer stack of StateT > OptionT > IO. This shows how terse you can get, where the code almost turns into a narrative.
* Newsletter sender [3] (which I use for my blog) [4] - This generalises over any monad as long as the trait requirements are met. This is about as declarative as you can get in C#. It's certainly pushing the language, but is still elegant (in my eyes anyway).
[1] https://github.com/louthy/language-ext
[2] https://github.com/louthy/language-ext/blob/main/Samples/Car...
[3] https://github.com/louthy/language-ext/blob/main/Samples/New...
[4] https://paullouth.com
-
Node.js can now execute TypeScript files
F# is a great FP language that runs on .NET and there's a growing field of FP proponents working in C#, sort of a Trojan Horse situation trying for a best of both worlds (easy onboarding for C# junior devs, but deep FP options thanks to things like C#'s clever LINQ syntax). LanguageExt is a big part of some of those ecosystems: https://github.com/louthy/language-ext
-
"ZLinq", a Zero-Allocation LINQ Library for .NET
> The only time I think query syntax is better than the extension methods is when dealing with table joins.
Fairly niche, but query syntax is a great approximation of Haskell's do notation:
https://github.com/louthy/language-ext/wiki/Does-C%23-Dream-...
-
What's New in F# 9
louthy/language-ext [1] is a C# library which does its darndest to build a fully functional language inside C#. I found it very interesting and used it for an experimental project (which ended up failing, not sure if my usage of language-ext was partially to blame). People told me I should have just used F#.
Anyone familiar with both that can compare them?
[1]: https://github.com/louthy/language-ext
-
Net 9.0 LINQ Performance Improvements
> p.s.: I really wish that instead of LanguageExt, companies would have adopted F# instead.
Ah the standard "why don't you just use F#" line:
I have a standard response to that now...
https://github.com/louthy/language-ext/wiki/%22Why-don't-you...
-
Google's New Pipe Syntax in SQL
And NHibernate.Linq and Dapper.Extensions.Linq… Most ORMs in the ecosystem have at least one Linq support library, even if just a third-party extension.
Also, there are fun things that support Linq syntax for non-ORM uses, too, such as System.Reactive.Linq and LanguageExt: https://github.com/louthy/language-ext/wiki/How-to-deal-with...
-
The Monad Invasion - Part 2: Monads in Action!
You probably noticed that .SetName() returns a Either. You may have come across Unit in libraries like MediatR or Language-Ext. It's a simple construct representing a type with only one possible value. We use it as a placeholder for operations that do not return a value but may return another state. In our example, .SetName() is a Command that does not return a value but may fail. Therefore, the monad Either carries two possible states: Right (without value) or Left (with an Error).
-
A note from our sponsor - AppSignal
www.appsignal.com | 14 Oct 2026
Stats
louthy/language-ext is an open source project licensed under MIT License which is an OSI approved license.
The primary programming language of language-ext is C#.