LanguageExt.Sys
                             
                            
                                5.0.0-beta-29
                            
                        
                    See the version list below for details.
dotnet add package LanguageExt.Sys --version 5.0.0-beta-29
NuGet\Install-Package LanguageExt.Sys -Version 5.0.0-beta-29
<PackageReference Include="LanguageExt.Sys" Version="5.0.0-beta-29" />
<PackageVersion Include="LanguageExt.Sys" Version="5.0.0-beta-29" />
<PackageReference Include="LanguageExt.Sys" />
paket add LanguageExt.Sys --version 5.0.0-beta-29
#r "nuget: LanguageExt.Sys, 5.0.0-beta-29"
#:package LanguageExt.Sys@5.0.0-beta-29
#addin nuget:?package=LanguageExt.Sys&version=5.0.0-beta-29&prerelease
#tool nuget:?package=LanguageExt.Sys&version=5.0.0-beta-29&prerelease
LanguageExt.Sys
LanguageExt.Sys is the a wrapper around the System namespace IO functions and is part of the language-ext functional programming framework.
The framework uses and abuses the features of C# to provide a pure functional-programming 'Base Class Library' that, if you squint, can look like extensions to the language itself. The desire here is to make programming in C# much more robust by helping the engineer's inertia flow in the direction of declarative and pure functional code rather than imperative.
Using these techniques for large code-bases can bring tangible benefits to long-term maintenance by removing hidden complexity and by easing the engineer's cognitive load.
Features
Functional effects and IO
Atomic concurrency and collections
| Location | Feature | Description | 
|---|---|---|
| Core | Atom<A> | A lock-free atomically mutable reference for working with shared state | 
| Core | Ref<A> | An atomic reference to be used in the transactional memory system | 
| Core | AtomHashMap<K, V> | An immutable HashMapwith a lock-free atomically mutable reference | 
| Core | AtomSeq<A> | An immutable Seqwith a lock-free atomically mutable reference | 
| Core | VectorClock<A> | Understand distributed causality | 
| Core | VersionVector<A> | A vector clock with some versioned data | 
| Core | VersionHashMap <ConflictV, K, V> | Distrubuted atomic versioning of keys in a hash-map | 
Immutable collections
| Location | Feature | Description | 
|---|---|---|
| Core | Arr<A> | Immutable array | 
| Core | Seq<A> | Lazy immutable list, evaluate at-most-once - very, very fast! | 
| Core | Iterable<A> | Wrapper around IEnumerablewith support for traits - enables the higher-kinded traits to work with enumerables. | 
| Core | Lst<A> | Immutable list - use SeqoverLstunless you needInsertAt | 
| Core | Map<K, V> | Immutable map | 
| Core | Map<OrdK, K, V> | Immutable map with Ord constraint on K | 
| Core | HashMap<K, V> | Immutable hash-map | 
| Core | HashMap<EqK, K, V> | Immutable hash-map with Eq constraint on K | 
| Core | Set<A> | Immutable set | 
| Core | Set<OrdA, A> | Immutable set with Ord constraint on A | 
| Core | HashSet<A> | Immutable hash-set | 
| Core | HashSet<EqA, A> | Immutable hash-set with Eq constraint on A | 
| Core | Que<A> | Immutable queue | 
| Core | Stck<A> | Immutable stack | 
Optional and alternative value monads
| Location | Feature | Description | 
|---|---|---|
| Core | Option<A> | Option monad | 
| Core | OptionT<M, A> | Option monad-transformer | 
| Core | Either<L,R> | Right/Left choice monad | 
| Core | EitherT<L, M, R> | Right/Left choice monad-transformer | 
| Core | Fin<A> | Errorhandling monad, likeEither<Error, A> | 
| Core | FinT<M, A> | Errorhandling monad-transformer | 
| Core | Try<A> | Exception handling monad | 
| Core | TryT<M, A> | Exception handling monad-transformer | 
| Core | Validation<FAIL ,SUCCESS> | Validation applicative and monad for collecting multiple errors before aborting an operation | 
| Core | ValidationT<FAIL, M, SUCCESS> | Validation applicative and monad-transformer | 
State managing monads
| Location | Feature | Description | 
|---|---|---|
| Core | Reader<E, A> | Reader monad | 
| Core | ReaderT<E, M, A> | Reader monad-transformer | 
| Core | Writer<W, A> | Writer monad that logs to a Wconstrained to be a Monoid | 
| Core | WriterT<W, M, A> | Writer monad-transformer | 
| Core | State<S, A> | State monad | 
| Core | StateT<S, M, A> | State monad-transformer | 
Parser combinators
| Location | Feature | Description | 
|---|---|---|
| Parsec | Parser<A> | String parser monad and full parser combinators library | 
| Parsec | Parser<I, O> | Parser monad that can work with any input stream type | 
Pretty
| Location | Feature | Description | 
|---|---|---|
| Core | Doc<A> | Produce nicely formatted text with smart layouts | 
Differencing
| Location | Feature | Description | 
|---|---|---|
| Core | Patch<EqA, A> | Uses patch-theory to efficiently calculate the difference ( Patch.diff(list1, list2)) between two collections ofAand build a patch which can be applied (Patch.apply(patch, list)) to one to make the other (think git diff). | 
Traits
The traits are major feature of v5+ language-ext that makes generic programming with higher-kinds a reality.  Check out Paul's series on Higher Kinds to get a deeper insight.
Value traits
These work a little like NewType but they impart semantic meaning and some common operators for the underlying value.
| Location | Feature | Description | 
|---|---|---|
| Core | DomainType<SELF, REPR> | Provides a mapping from SELFto an underlying representation:REPR | 
| Core | Identifier <SELF> | Identifiers (like IDs in databases: PersonIdfor example), they are equivalent toDomaintTypewith equality. | 
| Core | VectorSpace<SELF, SCALAR> | Scalable values; can add and subtract self, but can only multiply and divide by a scalar. Can also negate. | 
| Core | Amount <SELF, SCALAR> | Quantities, such as the amount of money in USD on a bank account or a file size in bytes. Derives VectorSpace,IdentifierLike,DomainType, and is orderable (comparable). | 
| Core | LocusLike <SELF, SCALAR, DISTANCE> | Works with space-like structures. Spaces have absolute and relative distances. Has an origin/zero point and derives DomainType,IdentifierLike,AmountLikeandVectorSpace.DISTANCEmust also be anAmountLike<SELF, REPR, SCALAR>. | 
| Product | Versions Compatible and additional computed target framework versions. | 
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. | 
- 
                                                    net8.0- LanguageExt.Core (>= 5.0.0-beta-29)
 
NuGet packages (4)
Showing the top 4 NuGet packages that depend on LanguageExt.Sys:
| Package | Downloads | 
|---|---|
| Echo.Process echo-process Actor library component that works with LanguageExt.Core: An 'Erlang like' process system (actors) that can optionally persist messages and state to Redis (note you can use it without Redis for in-app messaging). The process system additionally supports Rx streams of messages and state allowing for a complete system of reactive events and message dispatch. | |
| DataQuery.LanguageExt Dapper + Npgsql database utilities using Language.Ext | |
| LanguageExt.SysX Extensions to language-ext effects system that wraps .NET5+ specific IO from the .NET BCL | |
| VSlices.Base Base package | 
GitHub repositories (2)
Showing the top 2 popular GitHub repositories that depend on LanguageExt.Sys:
| Repository | Stars | 
|---|---|
| dbosoft/YaNco 
                                                            .NET SAP RFC API based on SAP Netweaver RFC SDK
                                                         | |
| louthy/echo-process 
                                                            Actor library for C# with additional modules that support persistence to Redis, as well as JS integration
                                                         | 
| Version | Downloads | Last Updated | 
|---|---|---|
| 5.0.0-beta-54 | 3,218 | 5/8/2025 | 
| 5.0.0-beta-53 | 199 | 5/7/2025 | 
| 5.0.0-beta-52 | 326 | 4/30/2025 | 
| 5.0.0-beta-51 | 198 | 4/23/2025 | 
| 5.0.0-beta-50 | 1,134 | 4/7/2025 | 
| 5.0.0-beta-49 | 452 | 2/15/2025 | 
| 5.0.0-beta-48 | 162 | 2/14/2025 | 
| 5.0.0-beta-47 | 160 | 2/10/2025 | 
| 5.0.0-beta-46 | 192 | 2/1/2025 | 
| 5.0.0-beta-45 | 410 | 12/27/2024 | 
| 5.0.0-beta-44 | 161 | 12/25/2024 | 
| 5.0.0-beta-43 | 146 | 12/23/2024 | 
| 5.0.0-beta-42 | 168 | 12/19/2024 | 
| 5.0.0-beta-41 | 145 | 12/19/2024 | 
| 5.0.0-beta-40 | 165 | 12/17/2024 | 
| 5.0.0-beta-39 | 188 | 11/27/2024 | 
| 5.0.0-beta-38 | 208 | 11/18/2024 | 
| 5.0.0-beta-36 | 156 | 11/6/2024 | 
| 5.0.0-beta-35 | 136 | 11/6/2024 | 
| 5.0.0-beta-34 | 140 | 10/28/2024 | 
| 5.0.0-beta-33 | 131 | 10/27/2024 | 
| 5.0.0-beta-32 | 155 | 10/27/2024 | 
| 5.0.0-beta-31 | 139 | 10/25/2024 | 
| 5.0.0-beta-30 | 139 | 10/25/2024 | 
| 5.0.0-beta-29 | 150 | 10/22/2024 | 
| 5.0.0-beta-28 | 144 | 10/17/2024 | 
| 5.0.0-beta-27 | 156 | 10/16/2024 | 
| 5.0.0-beta-26 | 149 | 10/13/2024 | 
| 5.0.0-beta-25 | 155 | 10/13/2024 | 
| 5.0.0-beta-24 | 148 | 10/11/2024 | 
| 5.0.0-beta-23 | 163 | 10/10/2024 | 
| 5.0.0-beta-22 | 194 | 9/20/2024 | 
| 5.0.0-beta-21 | 146 | 9/20/2024 | 
| 5.0.0-beta-20 | 161 | 9/18/2024 | 
| 5.0.0-beta-19 | 162 | 9/18/2024 | 
| 5.0.0-beta-18 | 186 | 9/16/2024 | 
| 5.0.0-beta-17 | 148 | 9/16/2024 | 
| 5.0.0-beta-16 | 163 | 9/16/2024 | 
| 5.0.0-beta-15 | 145 | 9/16/2024 | 
| 5.0.0-beta-14 | 199 | 9/5/2024 | 
| 5.0.0-beta-13 | 144 | 9/5/2024 | 
| 5.0.0-beta-12 | 147 | 9/4/2024 | 
| 5.0.0-beta-11 | 158 | 9/2/2024 | 
| 5.0.0-beta-10 | 187 | 8/18/2024 | 
| 5.0.0-beta-09 | 155 | 8/18/2024 | 
| 5.0.0-beta-08 | 170 | 8/16/2024 | 
| 5.0.0-beta-07 | 178 | 8/7/2024 | 
| 5.0.0-beta-06 | 110 | 8/4/2024 | 
| 5.0.0-beta-05 | 100 | 8/3/2024 | 
| 5.0.0-beta-04 | 125 | 7/30/2024 | 
| 5.0.0-beta-03 | 165 | 7/29/2024 | 
| 5.0.0-beta-02 | 124 | 7/28/2024 | 
| 5.0.0-beta-01 | 256 | 6/26/2024 | 
| 5.0.0-alpha.11 | 119 | 5/24/2024 | 
| 5.0.0-alpha.10 | 91 | 5/16/2024 | 
| 5.0.0-alpha.7 | 96 | 5/12/2024 | 
| 5.0.0-alpha.6 | 112 | 4/16/2024 | 
| 5.0.0-alpha.5 | 110 | 3/24/2024 | 
| 5.0.0-alpha.3 | 110 | 3/23/2024 | 
| 5.0.0-alpha.2 | 79 | 3/19/2024 | 
| 5.0.0-alpha.1 | 103 | 3/4/2024 | 
| 4.4.9 | 50,502 | 6/26/2024 | 
| 4.4.8 | 41,558 | 2/7/2024 | 
| 4.4.7 | 10,289 | 10/21/2023 | 
| 4.4.6 | 1,189 | 10/1/2023 | 
| 4.4.5 | 1,629 | 9/21/2023 | 
| 4.4.4 | 1,177 | 9/7/2023 | 
| 4.4.3 | 13,198 | 4/14/2023 | 
| 4.4.2 | 4,165 | 2/5/2023 | 
| 4.4.1 | 891 | 2/4/2023 | 
| 4.4.0 | 3,665 | 11/16/2022 | 
| 4.3.2-beta | 2,262 | 6/29/2022 | 
| 4.3.1-beta | 709 | 6/28/2022 | 
| 4.3.0-beta | 678 | 6/28/2022 | 
| 4.2.9 | 21,646 | 6/27/2022 | 
| 4.2.8 | 1,149 | 6/27/2022 | 
| 4.2.7 | 1,140 | 6/16/2022 | 
| 4.2.6 | 1,152 | 6/16/2022 | 
| 4.2.5 | 1,134 | 6/15/2022 | 
| 4.2.2 | 1,405 | 6/7/2022 | 
| 4.2.1 | 1,129 | 6/4/2022 | 
| 4.2.0 | 1,117 | 6/4/2022 | 
| 4.1.1 | 2,660 | 5/20/2022 | 
| 4.1.0 | 6,618 | 5/10/2022 | 
| 4.0.10-beta | 722 | 5/4/2022 | 
| 4.0.9-beta | 287 | 5/2/2022 | 
| 4.0.8-beta | 318 | 3/15/2022 | 
| 4.0.7-beta | 307 | 3/9/2022 | 
| 4.0.6-beta | 302 | 3/9/2022 | 
| 4.0.5-beta | 300 | 3/9/2022 | 
| 4.0.4 | 939 | 3/7/2022 | 
| 4.0.3 | 18,759 | 10/21/2021 | 
| 4.0.2 | 524 | 10/20/2021 | 
| 4.0.1 | 537 | 10/20/2021 | 
| 4.0.0 | 664 | 10/17/2021 | 
| 3.5.69-beta | 518 | 10/17/2021 | 
| 3.5.68-beta | 444 | 10/16/2021 | 
| 3.5.67-beta | 467 | 10/16/2021 | 
| 3.5.66-beta | 378 | 10/16/2021 | 
| 3.5.65-beta | 341 | 10/14/2021 | 
| 3.5.64-beta | 410 | 10/9/2021 | 
| 3.5.63-beta | 420 | 10/9/2021 | 
| 3.5.62-beta | 385 | 9/29/2021 | 
| 3.5.61-beta | 384 | 9/28/2021 | 
| 3.5.60-beta | 379 | 9/28/2021 | 
| 3.5.59-beta | 385 | 9/21/2021 | 
| 3.5.58-beta | 371 | 9/20/2021 | 
| 3.5.57-beta | 392 | 9/19/2021 | 
| 3.5.56-beta | 455 | 9/19/2021 | 
| 3.5.55-beta | 384 | 9/19/2021 | 
| 3.5.54-beta | 438 | 9/11/2021 | 
| 3.5.53-beta | 500 | 8/15/2021 | 
| 3.5.52-beta | 349 | 8/15/2021 | 
| 3.5.51-beta | 404 | 8/12/2021 | 
| 3.5.50-beta | 427 | 7/28/2021 | 
| 3.5.49-beta | 411 | 7/28/2021 | 
| 3.5.48-beta | 343 | 7/27/2021 | 
| 3.5.46-beta | 408 | 7/22/2021 | 
| 3.5.45-beta | 370 | 7/21/2021 | 
| 3.5.44-beta | 359 | 7/19/2021 | 
| 3.5.43-beta | 430 | 7/18/2021 | 
| 3.5.42-beta | 419 | 7/18/2021 | 
| 3.5.41-beta | 389 | 7/18/2021 | 
| 3.5.40-beta | 385 | 7/18/2021 | 
| 3.5.39-beta | 422 | 7/18/2021 | 
| 3.5.38-beta | 383 | 7/16/2021 | 
| 3.5.37-beta | 401 | 7/7/2021 | 
| 3.5.36-beta | 403 | 7/7/2021 | 
| 3.5.35-beta | 375 | 7/6/2021 | 
| 3.5.34-beta | 420 | 7/6/2021 | 
| 3.5.33-beta | 420 | 7/5/2021 | 
| 3.5.32-beta | 416 | 7/5/2021 | 
| 3.5.31-beta | 364 | 7/5/2021 | 
| 3.5.30-beta | 363 | 7/5/2021 | 
| 3.5.28-beta | 390 | 6/24/2021 |