diff --git a/Funcky.Async/Extensions/AsyncEnumerableExtensions/Scan.cs b/Funcky.Async/Extensions/AsyncEnumerableExtensions/Scan.cs
index 792d0b69..ec08a298 100644
--- a/Funcky.Async/Extensions/AsyncEnumerableExtensions/Scan.cs
+++ b/Funcky.Async/Extensions/AsyncEnumerableExtensions/Scan.cs
@@ -5,7 +5,7 @@ namespace Funcky.Extensions;
public static partial class AsyncEnumerableExtensions
{
///
- /// Scan generates a sequence known as the the inclusive prefix sum.
+ /// Scan generates a sequence known as the inclusive prefix sum.
///
/// The type of the source elements.
/// The seed and target type.
@@ -17,7 +17,7 @@ public static IAsyncEnumerable InclusiveScan(
=> InclusiveScanEnumerable(source, seed, accumulator);
///
- /// Scan generates a sequence known as the the inclusive prefix sum.
+ /// Scan generates a sequence known as the inclusive prefix sum.
///
/// The type of the source elements.
/// The seed and target type.
@@ -29,7 +29,7 @@ public static IAsyncEnumerable InclusiveScanAwait InclusiveScanAwaitEnumerable(source, seed, accumulator);
///
- /// Scan generates a sequence known as the the inclusive prefix sum.
+ /// Scan generates a sequence known as the inclusive prefix sum.
///
/// The type of the source elements.
/// The seed and target type.
@@ -41,7 +41,7 @@ public static IAsyncEnumerable InclusiveScanAwaitWithCancellation InclusiveScanAwaitWithCancellationEnumerable(source, seed, accumulator);
///
- /// Scan generates a sequence known as the the exclusive prefix sum.
+ /// Scan generates a sequence known as the exclusive prefix sum.
///
/// The type of the source elements.
/// The seed and target type.
@@ -53,7 +53,7 @@ public static IAsyncEnumerable ExclusiveScan(
=> ExclusiveScanEnumerable(source, seed, accumulator);
///
- /// Scan generates a sequence known as the the exclusive prefix sum.
+ /// Scan generates a sequence known as the exclusive prefix sum.
///
/// The type of the source elements.
/// The seed and target type.
@@ -65,7 +65,7 @@ public static IAsyncEnumerable ExclusiveScanAwait ExclusiveScanAwaitEnumerable(source, seed, accumulator);
///
- /// Scan generates a sequence known as the the exclusive prefix sum.
+ /// Scan generates a sequence known as the exclusive prefix sum.
///
/// The type of the source elements.
/// The seed and target type.
diff --git a/Funcky/Extensions/AsyncEnumerableExtensions/Scan.cs b/Funcky/Extensions/AsyncEnumerableExtensions/Scan.cs
index 71d3bd3c..da30e48f 100644
--- a/Funcky/Extensions/AsyncEnumerableExtensions/Scan.cs
+++ b/Funcky/Extensions/AsyncEnumerableExtensions/Scan.cs
@@ -6,7 +6,7 @@ namespace Funcky.Extensions;
public static partial class AsyncEnumerableExtensions
{
///
- /// Scan generates a sequence known as the the inclusive prefix sum.
+ /// Scan generates a sequence known as the inclusive prefix sum.
///
/// The type of the source elements.
/// The seed and target type.
@@ -18,7 +18,7 @@ public static IAsyncEnumerable InclusiveScan(
=> InclusiveScanEnumerable(source, seed, accumulator);
///
- /// Scan generates a sequence known as the the inclusive prefix sum.
+ /// Scan generates a sequence known as the inclusive prefix sum.
///
/// The type of the source elements.
/// The seed and target type.
@@ -30,7 +30,7 @@ public static IAsyncEnumerable InclusiveScanAwait InclusiveScanAwaitEnumerable(source, seed, accumulator);
///
- /// Scan generates a sequence known as the the inclusive prefix sum.
+ /// Scan generates a sequence known as the inclusive prefix sum.
///
/// The type of the source elements.
/// The seed and target type.
@@ -42,7 +42,7 @@ public static IAsyncEnumerable InclusiveScanAwaitWithCancellation InclusiveScanAwaitWithCancellationEnumerable(source, seed, accumulator);
///
- /// Scan generates a sequence known as the the exclusive prefix sum.
+ /// Scan generates a sequence known as the exclusive prefix sum.
///
/// The type of the source elements.
/// The seed and target type.
@@ -54,7 +54,7 @@ public static IAsyncEnumerable ExclusiveScan(
=> ExclusiveScanEnumerable(source, seed, accumulator);
///
- /// Scan generates a sequence known as the the exclusive prefix sum.
+ /// Scan generates a sequence known as the exclusive prefix sum.
///
/// The type of the source elements.
/// The seed and target type.
@@ -66,7 +66,7 @@ public static IAsyncEnumerable ExclusiveScanAwait ExclusiveScanAwaitEnumerable(source, seed, accumulator);
///
- /// Scan generates a sequence known as the the exclusive prefix sum.
+ /// Scan generates a sequence known as the exclusive prefix sum.
///
/// The type of the source elements.
/// The seed and target type.
diff --git a/Funcky/Extensions/EnumerableExtensions/Scan.cs b/Funcky/Extensions/EnumerableExtensions/Scan.cs
index 8d8b01e6..e06f04e3 100644
--- a/Funcky/Extensions/EnumerableExtensions/Scan.cs
+++ b/Funcky/Extensions/EnumerableExtensions/Scan.cs
@@ -3,7 +3,7 @@ namespace Funcky.Extensions;
public static partial class EnumerableExtensions
{
///
- /// Scan generates a sequence known as the the inclusive prefix sum.
+ /// Scan generates a sequence known as the inclusive prefix sum.
///
/// The type of the source elements.
/// The seed and target type.
@@ -23,7 +23,7 @@ public static IEnumerable InclusiveScan(this
}
///
- /// Scan generates a sequence known as the the exclusive prefix sum.
+ /// Scan generates a sequence known as the exclusive prefix sum.
///
/// The type of the source elements.
/// The seed and target type.
diff --git a/Funcky/Funcky.csproj b/Funcky/Funcky.csproj
index 3be937d9..5fb6f812 100644
--- a/Funcky/Funcky.csproj
+++ b/Funcky/Funcky.csproj
@@ -7,7 +7,7 @@
Funcky
Funcky is a functional C# library
Functional Monad Linq
- 3.5.1
+ 3.6.0
true
snupkg
README.md
diff --git a/Funcky/PublicAPI.Shipped.txt b/Funcky/PublicAPI.Shipped.txt
index 1bd77081..8e6c0198 100644
--- a/Funcky/PublicAPI.Shipped.txt
+++ b/Funcky/PublicAPI.Shipped.txt
@@ -1,4 +1,6 @@
#nullable enable
+Funcky.AsyncFunctional
+Funcky.AsyncSequence
Funcky.Discard
Funcky.DownCast
Funcky.EitherOrBoth
@@ -8,6 +10,7 @@ Funcky.EitherOrBoth.Equals(Funcky.EitherOrBoth oth
Funcky.EitherOrBoth.Match(System.Func! left, System.Func! right, System.Func! both) -> TMatchResult
Funcky.EitherOrBoth.Switch(System.Action! left, System.Action! right, System.Action! both) -> void
Funcky.Extensions.ActionExtensions
+Funcky.Extensions.AsyncEnumerableExtensions
Funcky.Extensions.DictionaryExtensions
Funcky.Extensions.EitherPartitions
Funcky.Extensions.EitherPartitions
@@ -22,7 +25,9 @@ Funcky.Extensions.FuncExtensions
Funcky.Extensions.HttpHeadersExtensions
Funcky.Extensions.HttpHeadersNonValidatedExtensions
Funcky.Extensions.ImmutableListExtensions
+Funcky.Extensions.JsonSerializerOptionsExtensions
Funcky.Extensions.ListExtensions
+Funcky.Extensions.OrderedDictionaryExtensions
Funcky.Extensions.ParseExtensions
Funcky.Extensions.Partitions
Funcky.Extensions.Partitions
@@ -69,7 +74,40 @@ Funcky.Extensions.ValueWithPrevious.Value.get -> TValue
Funcky.Extensions.ValueWithPrevious.ValueWithPrevious() -> void
Funcky.Extensions.ValueWithPrevious.ValueWithPrevious(TValue value, Funcky.Monads.Option previous) -> void
Funcky.Functional
+Funcky.IAsyncBuffer
Funcky.IBuffer
+Funcky.Monads.ConfiguredOptionTaskAwaitable
+Funcky.Monads.ConfiguredOptionTaskAwaitable.ConfiguredOptionTaskAwaitable() -> void
+Funcky.Monads.ConfiguredOptionTaskAwaitable.ConfiguredOptionTaskAwaiter
+Funcky.Monads.ConfiguredOptionTaskAwaitable.ConfiguredOptionTaskAwaiter.ConfiguredOptionTaskAwaiter() -> void
+Funcky.Monads.ConfiguredOptionTaskAwaitable.ConfiguredOptionTaskAwaiter.GetResult() -> void
+Funcky.Monads.ConfiguredOptionTaskAwaitable.ConfiguredOptionTaskAwaiter.IsCompleted.get -> bool
+Funcky.Monads.ConfiguredOptionTaskAwaitable.ConfiguredOptionTaskAwaiter.OnCompleted(System.Action! continuation) -> void
+Funcky.Monads.ConfiguredOptionTaskAwaitable.GetAwaiter() -> Funcky.Monads.ConfiguredOptionTaskAwaitable.ConfiguredOptionTaskAwaiter
+Funcky.Monads.ConfiguredOptionTaskAwaitable
+Funcky.Monads.ConfiguredOptionTaskAwaitable.ConfiguredOptionTaskAwaitable() -> void
+Funcky.Monads.ConfiguredOptionTaskAwaitable.ConfiguredOptionTaskAwaiter
+Funcky.Monads.ConfiguredOptionTaskAwaitable.ConfiguredOptionTaskAwaiter.ConfiguredOptionTaskAwaiter() -> void
+Funcky.Monads.ConfiguredOptionTaskAwaitable.ConfiguredOptionTaskAwaiter.GetResult() -> Funcky.Monads.Option
+Funcky.Monads.ConfiguredOptionTaskAwaitable.ConfiguredOptionTaskAwaiter.IsCompleted.get -> bool
+Funcky.Monads.ConfiguredOptionTaskAwaitable.ConfiguredOptionTaskAwaiter.OnCompleted(System.Action! continuation) -> void
+Funcky.Monads.ConfiguredOptionTaskAwaitable.GetAwaiter() -> Funcky.Monads.ConfiguredOptionTaskAwaitable.ConfiguredOptionTaskAwaiter
+Funcky.Monads.ConfiguredOptionValueTaskAwaitable
+Funcky.Monads.ConfiguredOptionValueTaskAwaitable.ConfiguredOptionValueTaskAwaitable() -> void
+Funcky.Monads.ConfiguredOptionValueTaskAwaitable.ConfiguredOptionValueTaskAwaiter
+Funcky.Monads.ConfiguredOptionValueTaskAwaitable.ConfiguredOptionValueTaskAwaiter.ConfiguredOptionValueTaskAwaiter() -> void
+Funcky.Monads.ConfiguredOptionValueTaskAwaitable.ConfiguredOptionValueTaskAwaiter.GetResult() -> void
+Funcky.Monads.ConfiguredOptionValueTaskAwaitable.ConfiguredOptionValueTaskAwaiter.IsCompleted.get -> bool
+Funcky.Monads.ConfiguredOptionValueTaskAwaitable.ConfiguredOptionValueTaskAwaiter.OnCompleted(System.Action! continuation) -> void
+Funcky.Monads.ConfiguredOptionValueTaskAwaitable.GetAwaiter() -> Funcky.Monads.ConfiguredOptionValueTaskAwaitable.ConfiguredOptionValueTaskAwaiter
+Funcky.Monads.ConfiguredOptionValueTaskAwaitable
+Funcky.Monads.ConfiguredOptionValueTaskAwaitable.ConfiguredOptionValueTaskAwaitable() -> void
+Funcky.Monads.ConfiguredOptionValueTaskAwaitable.ConfiguredOptionValueTaskAwaiter
+Funcky.Monads.ConfiguredOptionValueTaskAwaitable.ConfiguredOptionValueTaskAwaiter.ConfiguredOptionValueTaskAwaiter() -> void
+Funcky.Monads.ConfiguredOptionValueTaskAwaitable.ConfiguredOptionValueTaskAwaiter.GetResult() -> Funcky.Monads.Option
+Funcky.Monads.ConfiguredOptionValueTaskAwaitable.ConfiguredOptionValueTaskAwaiter.IsCompleted.get -> bool
+Funcky.Monads.ConfiguredOptionValueTaskAwaitable.ConfiguredOptionValueTaskAwaiter.OnCompleted(System.Action! continuation) -> void
+Funcky.Monads.ConfiguredOptionValueTaskAwaitable.GetAwaiter() -> Funcky.Monads.ConfiguredOptionValueTaskAwaitable.ConfiguredOptionValueTaskAwaiter
Funcky.Monads.Either
Funcky.Monads.Either.Either() -> void
Funcky.Monads.Either.Equals(Funcky.Monads.Either other) -> bool
@@ -87,7 +125,10 @@ Funcky.Monads.Either.SelectMany(System.Func.SelectMany(System.Func>! selector) -> Funcky.Monads.Either
Funcky.Monads.Either.Switch(System.Action! left, System.Action! right) -> void
Funcky.Monads.Either
+Funcky.Monads.EitherAsyncExtensions
Funcky.Monads.EitherExtensions
+Funcky.Monads.IEither
+Funcky.Monads.IOption
Funcky.Monads.Lazy
Funcky.Monads.LazyExtensions
Funcky.Monads.Option
@@ -116,6 +157,7 @@ Funcky.Monads.Option.this[int index].get -> TItem
Funcky.Monads.Option.ToEnumerable() -> System.Collections.Generic.IEnumerable!
Funcky.Monads.Option.TryGetValue(out TItem? item) -> bool
Funcky.Monads.Option.Where(System.Func! predicate) -> Funcky.Monads.Option
+Funcky.Monads.OptionAsyncExtensions
Funcky.Monads.OptionComparer
Funcky.Monads.OptionComparer
Funcky.Monads.OptionEqualityComparer
@@ -123,6 +165,26 @@ Funcky.Monads.OptionEqualityComparer
Funcky.Monads.OptionExtensions
Funcky.Monads.OptionJsonConverter
Funcky.Monads.OptionJsonConverter.OptionJsonConverter() -> void
+Funcky.Monads.OptionTaskAwaiter
+Funcky.Monads.OptionTaskAwaiter.GetResult() -> void
+Funcky.Monads.OptionTaskAwaiter.IsCompleted.get -> bool
+Funcky.Monads.OptionTaskAwaiter.OnCompleted(System.Action! continuation) -> void
+Funcky.Monads.OptionTaskAwaiter.OptionTaskAwaiter() -> void
+Funcky.Monads.OptionTaskAwaiter
+Funcky.Monads.OptionTaskAwaiter.GetResult() -> Funcky.Monads.Option
+Funcky.Monads.OptionTaskAwaiter.IsCompleted.get -> bool
+Funcky.Monads.OptionTaskAwaiter.OnCompleted(System.Action! continuation) -> void
+Funcky.Monads.OptionTaskAwaiter.OptionTaskAwaiter() -> void
+Funcky.Monads.OptionValueTaskAwaiter
+Funcky.Monads.OptionValueTaskAwaiter.GetResult() -> void
+Funcky.Monads.OptionValueTaskAwaiter.IsCompleted.get -> bool
+Funcky.Monads.OptionValueTaskAwaiter.OnCompleted(System.Action! continuation) -> void
+Funcky.Monads.OptionValueTaskAwaiter.OptionValueTaskAwaiter() -> void
+Funcky.Monads.OptionValueTaskAwaiter
+Funcky.Monads.OptionValueTaskAwaiter.GetResult() -> Funcky.Monads.Option
+Funcky.Monads.OptionValueTaskAwaiter.IsCompleted.get -> bool
+Funcky.Monads.OptionValueTaskAwaiter.OnCompleted(System.Action! continuation) -> void
+Funcky.Monads.OptionValueTaskAwaiter.OptionValueTaskAwaiter() -> void
Funcky.Monads.Reader
Funcky.Monads.Reader
Funcky.Monads.ReaderExtensions
@@ -142,6 +204,7 @@ Funcky.Monads.Result.Select(System.Func.SelectMany(System.Func>! selector) -> Funcky.Monads.Result
Funcky.Monads.Result.SelectMany(System.Func>! selector, System.Func! resultSelector) -> Funcky.Monads.Result
Funcky.Monads.Result.Switch(System.Action! ok, System.Action! error) -> void
+Funcky.Monads.ResultAsyncExtensions
Funcky.Monads.ResultExtensions
Funcky.RequireClass
Funcky.RequireClass.RequireClass() -> void
@@ -189,15 +252,36 @@ override Funcky.Monads.Result.GetHashCode() -> int
override Funcky.Monads.Result.ToString() -> string!
override Funcky.Unit.Equals(object? obj) -> bool
override Funcky.Unit.GetHashCode() -> int
+static Funcky.AsyncFunctional.RetryAsync(System.Action! action, System.Func! shouldRetry, Funcky.RetryPolicies.IRetryPolicy! retryPolicy, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.ValueTask
+static Funcky.AsyncFunctional.RetryAsync(System.Func>>! producer, Funcky.RetryPolicies.IRetryPolicy! retryPolicy, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.ValueTask>
+static Funcky.AsyncFunctional.RetryAsync(System.Func>>! producer, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.ValueTask
+static Funcky.AsyncFunctional.RetryAsync(System.Func! producer, System.Func! shouldRetry, Funcky.RetryPolicies.IRetryPolicy! retryPolicy, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.ValueTask
+static Funcky.AsyncFunctional.RetryAwaitAsync(System.Func! action, System.Func! shouldRetry, Funcky.RetryPolicies.IRetryPolicy! retryPolicy, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.ValueTask
+static Funcky.AsyncFunctional.RetryAwaitAsync(System.Func>! producer, System.Func! shouldRetry, Funcky.RetryPolicies.IRetryPolicy! retryPolicy, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.ValueTask
+static Funcky.AsyncSequence.Concat(System.Collections.Generic.IAsyncEnumerable!>! sources) -> System.Collections.Generic.IAsyncEnumerable!
+static Funcky.AsyncSequence.Concat(System.Collections.Generic.IAsyncEnumerable!>! sources) -> System.Collections.Generic.IAsyncEnumerable!
+static Funcky.AsyncSequence.Concat(System.Collections.Generic.IEnumerable!>! sources) -> System.Collections.Generic.IAsyncEnumerable!
+static Funcky.AsyncSequence.Concat(params System.Collections.Generic.IAsyncEnumerable![]! sources) -> System.Collections.Generic.IAsyncEnumerable!
+static Funcky.AsyncSequence.Cycle(TResult element) -> System.Collections.Generic.IAsyncEnumerable!
+static Funcky.AsyncSequence.CycleRange(System.Collections.Generic.IAsyncEnumerable! sequence) -> Funcky.IAsyncBuffer!
+static Funcky.AsyncSequence.FromNullable(TResult? element) -> System.Collections.Generic.IAsyncEnumerable!
+static Funcky.AsyncSequence.FromNullable(TResult? element) -> System.Collections.Generic.IAsyncEnumerable!
+static Funcky.AsyncSequence.RepeatRange(System.Collections.Generic.IAsyncEnumerable! source, int count) -> Funcky.IAsyncBuffer!
+static Funcky.AsyncSequence.Return(TResult element) -> System.Collections.Generic.IAsyncEnumerable!
+static Funcky.AsyncSequence.Return(params TResult[]! elements) -> System.Collections.Generic.IAsyncEnumerable!
+static Funcky.AsyncSequence.Successors(Funcky.Monads.Option first, System.Func>>! successor) -> System.Collections.Generic.IAsyncEnumerable!
+static Funcky.AsyncSequence.Successors(Funcky.Monads.Option first, System.Func>! successor) -> System.Collections.Generic.IAsyncEnumerable!
+static Funcky.AsyncSequence.Successors(TResult first, System.Func>>! successor) -> System.Collections.Generic.IAsyncEnumerable!
+static Funcky.AsyncSequence.Successors(TResult first, System.Func>! successor) -> System.Collections.Generic.IAsyncEnumerable!
static Funcky.DownCast.From(Funcky.Monads.Option option) -> Funcky.Monads.Option
static Funcky.DownCast.From(Funcky.Monads.Result result) -> Funcky.Monads.Result
static Funcky.DownCast.From(Funcky.Monads.Either either, System.Func! failedCast) -> Funcky.Monads.Either
static Funcky.EitherOrBoth.FromOptions(Funcky.Monads.Option left, Funcky.Monads.Option right) -> Funcky.Monads.Option>
static Funcky.EitherOrBoth.Both(TLeft left, TRight right) -> Funcky.EitherOrBoth
static Funcky.EitherOrBoth.Left(TLeft left) -> Funcky.EitherOrBoth
+static Funcky.EitherOrBoth.Right(TRight right) -> Funcky.EitherOrBoth
static Funcky.EitherOrBoth.operator !=(Funcky.EitherOrBoth left, Funcky.EitherOrBoth right) -> bool
static Funcky.EitherOrBoth.operator ==(Funcky.EitherOrBoth left, Funcky.EitherOrBoth right) -> bool
-static Funcky.EitherOrBoth.Right(TRight right) -> Funcky.EitherOrBoth
static Funcky.Extensions.ActionExtensions.Compose(this System.Action! f, System.Func! g) -> System.Action!
static Funcky.Extensions.ActionExtensions.Compose(this System.Action! f, System.Func! g) -> System.Action!
static Funcky.Extensions.ActionExtensions.Curry(this System.Action! action) -> System.Func!>!>!>!>!>!>!>!
@@ -221,8 +305,180 @@ static Funcky.Extensions.ActionExtensions.Uncurry(this Syste
static Funcky.Extensions.ActionExtensions.Uncurry(this System.Func!>!>!>! action) -> System.Action!
static Funcky.Extensions.ActionExtensions.Uncurry(this System.Func!>!>! action) -> System.Action!
static Funcky.Extensions.ActionExtensions.Uncurry(this System.Func!>! action) -> System.Action!
+static Funcky.Extensions.AsyncEnumerableExtensions.AdjacentGroupBy(this System.Collections.Generic.IAsyncEnumerable! source, System.Func! keySelector, System.Func! elementSelector, System.Func!, TResult>! resultSelector) -> System.Collections.Generic.IAsyncEnumerable!
+static Funcky.Extensions.AsyncEnumerableExtensions.AdjacentGroupBy(this System.Collections.Generic.IAsyncEnumerable! source, System.Func! keySelector, System.Func! elementSelector, System.Func!, TResult>! resultSelector, System.Collections.Generic.IEqualityComparer! comparer) -> System.Collections.Generic.IAsyncEnumerable!
+static Funcky.Extensions.AsyncEnumerableExtensions.AdjacentGroupBy(this System.Collections.Generic.IAsyncEnumerable! source, System.Func! keySelector, System.Func! elementSelector) -> System.Collections.Generic.IAsyncEnumerable!>!
+static Funcky.Extensions.AsyncEnumerableExtensions.AdjacentGroupBy(this System.Collections.Generic.IAsyncEnumerable! source, System.Func! keySelector, System.Func! elementSelector, System.Collections.Generic.IEqualityComparer! comparer) -> System.Collections.Generic.IAsyncEnumerable!>!
+static Funcky.Extensions.AsyncEnumerableExtensions.AdjacentGroupBy(this System.Collections.Generic.IAsyncEnumerable! source, System.Func! keySelector, System.Func