SaaSHub helps you find the best software and product alternatives Learn more β
Top 23 Result Open-Source Projects
-
mo
π¦ Monads and popular FP abstractions, powered by Go 1.18+ Generics (Option, Result, Either...)
-
SurveyJS
Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App. With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.
-
Result
The modelling for success/failure of operations in Kotlin and KMM (Kotlin Multiplatform Mobile) (by kittinunf)
-
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
-
stream-result
π Railway-oriented library to easily model and handle success/failure for Kotlin, Android, and Retrofit.
-
-
Communication
Communication library is a convenient wrapper for handling the results of functions that do not throw exceptions. Instead of throwing exceptions, these functions return an object that contains the result of the operation.
-
expressible
Utility library dedicated for functional & non-functional codebases to simplify modelling of success and failure responses for Java/Kotlin π
-
-
ApiResult
ApiResult is a Kotlin Multiplatform declarative error handling framework that is performant, easy to use and feature-rich.
-
dart_result_type
π Result Type for Dart represents either a success or a failure, including an associated value in each case.
-
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
Project mention: Functional Programming Library for Golang by IBM | news.ycombinator.com | 2023-08-17A simple alternative is the combination of:
- https://github.com/samber/lo
- https://github.com/samber/mo
The split is also nice as you can choose to just use the generic convenience functions from lo without the more FP related things from mo.
Hey, I am considering adopting the Result pattern in my codebase. Wanted to get some opinions from someone who has experience with it: should I start with language-ext or FunctionalExtensions?
Author here. I have no idea what you could possibly mean with this comment. The coroutineBinding implementation correctly uses the coroutines API for parallel decomposition of Result bindings, exactly how the Kotlin Corotines guide tells you to (backed by a [Mutex](https://github.com/michaelbull/kotlin-result/blob/master/kot...)). The coroutineBinding isn't even the main selling point of the library, you can use it without using this feature entirely.
Please could you elaborate on what "looking thread safe" means to you? The only portion of the library that supports concurrency *is* thread safe - the unit tests prove it and the use of concurrency primitives such as Kotlin's Mutex are indicative of this. I truly have no idea how you've judged the entirely of the lbirary on whether it's "thread safe" when there is a single function that's related to concurrency and it is very clearly using concurrency primitives.
Using the Nuget Package Ardalis.Result for mapping result objects to HTTP Response Codes and associated objects; FastEndpoint has its own way of approaching this problem, which seems to be to hang everything off an "Endpoint" and optionally using Swagger to redundantly describe the route's behavior; this seems like a step backwards from more advanced Web frameworks in other languages. The advantage of Ardalis.Result should be clear - each closed form of Ardalis.Result can have its own knowledge of what it does, and therefore automatically describe the abstract transformations it does on a request. In functional programming, this "abstract transformation" is typically called a monad transformer or Arrow. Once you have a type that describes the abstract transformation, plugging that into Swagger should be straight-forward.
> You can also not really have productive and well-fitting errors-as-values in a language that emphasizes UFCS
Eh, https://github.com/arnetheduck/nim-results and associated syntax from https://github.com/codex-storage/questionable would beg to disagree. Nim's stdlib does not have productive and well-fitting errors because it suffers from inertia and started far before the robust wonders of recoverable error handling via errors-as-types entered the mainstream with Rust (IMO: and refined with Swift). Option/Result types are fantastic and I do so wish the standard library used them: but it's nothing a (very large) wrapper couldn't provide, I suppose.
I do strongly think that other languages are greatly missing out on UFCS and I miss it dearly whenever I go to write Python or anything else. I'm not quite sure how you think UFCS would make it impossible to have good error handling? Rust also has (limited, unfortunately) UFCS and syntax around error handling does not suffer because of it. If by errors-as-values you mean Go-style error handling, I quite despise it - I think any benefits of the approach are far offset by the verbosity, quite similarly to Java's checked exceptions.
Project mention: π New Library: ApiResult - A Monad for Declarative and Functional Error Handling | /r/androiddev | 2023-08-31Just published a new library - ApiResult.
Result discussion
Result related posts
-
RSLike@3. Well-known Symbols, Improved Usage of TypeScript, and Weighing More
-
How do you define errors?
-
Result Class with Generic Type for both Success and Failure States
-
Is runCatching in use in any of your projects ? My team is abusing it
-
Struggling with software robustness with Kotlin
-
Thoughts on Kotlin Multiplatform?
-
Communication - library for Results
-
A note from our sponsor - SaaSHub
www.saashub.com | 16 Jun 2024
Index
What are some of the best open-source Result projects? This list will help you:
Project | Stars | |
---|---|---|
1 | mo | 2,379 |
2 | CSharpFunctionalExtensions | 2,283 |
3 | ts-belt | 1,053 |
4 | kotlin-result | 961 |
5 | Result | 901 |
6 | Result | 791 |
7 | monads | 722 |
8 | boxed | 632 |
9 | result | 265 |
10 | nim-results | 141 |
11 | ResultTypes.jl | 91 |
12 | stream-result | 84 |
13 | option | 81 |
14 | Esito | 59 |
15 | exceptionally | 35 |
16 | Communication | 31 |
17 | expressible | 29 |
18 | common | 28 |
19 | ApiResult | 28 |
20 | rust-option | 23 |
21 | dart_result_type | 22 |
22 | flusso | 20 |
23 | valor | 16 |