You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+138-14
Original file line number
Diff line number
Diff line change
@@ -7,15 +7,151 @@ An implementation [`IAsyncEnumerable<'T>`][3] as a `taskSeq` CE for F# with acco
7
7
8
8
The `IAsyncEnumerable` interface was added to .NET in `.NET Core 3.0` and is part of `.NET Standard 2.1`. The main use-case was for iterative asynchronous enumeration over some resource. For instance, an event stream or a REST API interface with pagination, where each page is a [`MoveNextAsync`][4] call on the [`IAsyncEnumerator<'T>`][5] given by a call to [`GetAsyncEnumerator()`][6]. It has been relatively challenging to work properly with this type and dealing with each step being asynchronous, and the enumerator implementing [`IAsyncDisposable`][7] as well, which requires careful handling.
9
9
10
+
## Short-term feature planning
11
+
12
+
Not necessarily in order of importance:
13
+
14
+
*[x] Stabilize and battle-test `taskSeq` resumable code. **DONE**
15
+
*[x] A growing set of module functions `TaskSeq`, see below for progress. **DONE & IN PROGRESS**
16
+
*[ ] Packaging and publishing on Nuget, **PLANNED: 13 November 2022**.
17
+
*[x] Add `Async` variants for functions taking HOF arguments. **DONE**
18
+
*[ ] Expand surface area based on `AsyncSeq`.
19
+
*[ ] User requests?
20
+
10
21
## Implementation progress
11
22
12
-
The _resumable state machine_ backing the `taskSeq` CE is considered stable. While bugs are always possible, we will mostly focus on adding functionality there, like adding more useful overloads for `yield` and `let!`. Suggestions are welcome!
23
+
### `taskSeq` CE
24
+
25
+
The _resumable state machine_ backing the `taskSeq` CE is now finished. Focus is now on adding functionality there, like adding more useful overloads for `yield` and `let!`. Suggestions are welcome!
26
+
27
+
### `TaskSeq` module functions
13
28
14
29
We are working hard on getting a full set of module functions on `TaskSeq` that can be used with `IAsyncEnumerable` sequences. Our guide is the set of F# `Seq` functions in F# Core and, where applicable, the functions provided from `AsyncSeq`. Each implemented function is documented through XML doc comments to provide the necessary context-sensitive help.
15
30
16
31
The following is the progress report:
17
32
18
-
TODO!
33
+
| Implemented |`Seq` function |`TaskSeq` function | Extra `async` variant | Remarks |
|_not planned_|`tryFindIndexBack`|||_iteration from back not possible_|
144
+
|✅|`tryHead`|`tryHead`|||
145
+
|✅|`tryItem`|`tryItem`|||
146
+
|✅|`tryLast`|`tryLast`|||
147
+
|✅|`tryPick`|`tryPick`|`tryPickAsync`||
148
+
||`unfold`|`unfold`|`unfoldAsync`||
149
+
||`updateAt`|`updateAt`|||
150
+
||`where`|`where`|`whereAsync`||
151
+
||`windowed`|`windowed`|||
152
+
|✅|`zip`|`zip`|||
153
+
||`zip3`|`zip3`|||
154
+
|||`zip4`|
19
155
20
156
### Futher reading `IAsyncEnumerable`
21
157
@@ -106,18 +242,6 @@ For more info, see this PR: https://github.com/abelbraaksma/TaskSeq/pull/29.
106
242
It's based on [Don Symes `taskSeq.fs`][20]
107
243
but expanded with useful utility functions and a few extra binding overloads.
108
244
109
-
## Short-term feature planning
110
-
111
-
Not necessarily in order of importance:
112
-
113
-
-[x] A minimal base set of useful functions and sensible CE overloads, like `map`, `collect`, `fold`, `zip`. These functions will live in the module `TaskSeq`. The CE will be called `taskSeq`.
114
-
-[ ] Packaging and publishing on Nuget
115
-
-[ ] Provide the same surface area of functions as `Seq` in F# Core
116
-
-[ ] For each function, have a "normal" function, where the operator is non-async, and an async version. I.e., `TaskSeq.map` and `TaskSeq.mapAsync`, the difference being that the `mapper` function returns a `#Task<'T>` in the second version.
117
-
-[ ] Examples, documentation and tests
118
-
-[ ] Expand surface area based on user requests
119
-
-[ ] Improving the original code, adding benchmarks, and what have you.
120
-
121
245
## Current set of `TaskSeq` utility functions
122
246
123
247
The following is the current surface area of the `TaskSeq` utility functions. This is just a dump of the signatures with doc comments
0 commit comments