Skip to content

Commit 3c05e4b

Browse files
Add support for ValueTask (#523)
1 parent e3f71e8 commit 3c05e4b

21 files changed

+311
-27
lines changed

.github/workflows/fable.yml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,14 @@ jobs:
4343
run: git submodule update --init --recursive
4444
- name: Remove global json
4545
run: rm global.json
46-
- name: Setup .NET Core
46+
- name: Remove global json in subfolder
47+
run: rm global.json
48+
working-directory: tests/FSharpPlusFable.Tests
49+
- name: Setup .NET Core 7
50+
uses: actions/setup-dotnet@v1
51+
with:
52+
dotnet-version: 7.0.100
53+
- name: Setup .NET Core 6
4754
uses: actions/setup-dotnet@v1
4855
with:
4956
dotnet-version: 6.0.201

FSharpPlus.sln

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,8 @@ Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharpPlusFable.Tests", "te
9898
EndProject
9999
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Benchmarks", "tests\benchmarks\Benchmarks.fsproj", "{EEFF08EB-8B0C-4F63-9425-4281EFF12087}"
100100
EndProject
101+
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "docsTool", "docsrc\tools\docsTool.fsproj", "{ACBBD11E-0746-4B9D-9CED-A90FE5824CE2}"
102+
EndProject
101103
Global
102104
GlobalSection(SolutionConfigurationPlatforms) = preSolution
103105
Debug|Any CPU = Debug|Any CPU
@@ -169,6 +171,14 @@ Global
169171
{EEFF08EB-8B0C-4F63-9425-4281EFF12087}.Fable|Any CPU.Build.0 = Debug|Any CPU
170172
{EEFF08EB-8B0C-4F63-9425-4281EFF12087}.Fable3|Any CPU.ActiveCfg = Debug|Any CPU
171173
{EEFF08EB-8B0C-4F63-9425-4281EFF12087}.Fable3|Any CPU.Build.0 = Debug|Any CPU
174+
{ACBBD11E-0746-4B9D-9CED-A90FE5824CE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
175+
{ACBBD11E-0746-4B9D-9CED-A90FE5824CE2}.Debug|Any CPU.Build.0 = Debug|Any CPU
176+
{ACBBD11E-0746-4B9D-9CED-A90FE5824CE2}.Release|Any CPU.ActiveCfg = Release|Any CPU
177+
{ACBBD11E-0746-4B9D-9CED-A90FE5824CE2}.Release|Any CPU.Build.0 = Release|Any CPU
178+
{ACBBD11E-0746-4B9D-9CED-A90FE5824CE2}.Fable|Any CPU.ActiveCfg = Debug|Any CPU
179+
{ACBBD11E-0746-4B9D-9CED-A90FE5824CE2}.Fable|Any CPU.Build.0 = Debug|Any CPU
180+
{ACBBD11E-0746-4B9D-9CED-A90FE5824CE2}.Fable3|Any CPU.ActiveCfg = Debug|Any CPU
181+
{ACBBD11E-0746-4B9D-9CED-A90FE5824CE2}.Fable3|Any CPU.Build.0 = Debug|Any CPU
172182
EndGlobalSection
173183
GlobalSection(SolutionProperties) = preSolution
174184
HideSolutionNode = FALSE
@@ -182,6 +192,7 @@ Global
182192
{7A5B766E-8141-4D8A-B3EB-91422FDBDF71} = {ED8079DD-2B06-4030-9F0F-DC548F98E1C4}
183193
{1CCD1BFB-60E4-40AA-B534-3C5EEE5E1E83} = {ED8079DD-2B06-4030-9F0F-DC548F98E1C4}
184194
{EEFF08EB-8B0C-4F63-9425-4281EFF12087} = {ED8079DD-2B06-4030-9F0F-DC548F98E1C4}
195+
{ACBBD11E-0746-4B9D-9CED-A90FE5824CE2} = {83F16175-43B1-4C90-A1EE-8E351C33435D}
185196
EndGlobalSection
186197
GlobalSection(ExtensibilityGlobals) = postSolution
187198
SolutionGuid = {789B5FFA-7891-4F60-831E-42C3C5ED2C51}

docsrc/content/abstraction-applicative.fsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ From F#
6767
- ``KeyValuePair<'Key,'T>``
6868
- ``'Monoid * 'T``
6969
- ``Task<'T>``
70+
- ``ValueTask<'T>``
7071
- ``'R->'T``
7172
- ``Expr<'T>``
7273
- ``ResizeArray<'T>``

docsrc/content/abstraction-comonad.fsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ From .Net/F#
6767
- ``Id<'T>``
6868
- ``('W * 'T)``
6969
- ``'Monoid -> 'T``
70+
- ``ValueTask<'T>``
7071
7172
7273
From F#+

docsrc/content/abstraction-functor.fsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ From F#
5858
- ``Map<'Key,'T>``
5959
- ``'Monoid * 'T``
6060
- ``Task<'T>``
61+
- ``ValueTask<'T>``
6162
- ``'R->'T``
6263
- ``Expr<'T>``
6364
- ``Dictionary<'Key,'T>``

docsrc/content/abstraction-monad.fsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ From F#
7575
- ``Choice<'T,'U>``
7676
- ``'Monoid * 'T``
7777
- ``Task<'T>``
78+
- ``ValueTask<'T>``
7879
- ``'R->'T``
7980
- ``ResizeArray<'T>``
8081

docsrc/content/abstraction-monoid.fsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ From .Net/F#
6060
- ``Tuple<'Monoid1* ... *'MonoidN>``
6161
- ``'Monoid1* ... *'MonoidN``
6262
- ``Task<'T>``
63+
- ``ValueTask<'T>``
6364
- ``'T->'Monoid``
6465
- ``Async<'T>``
6566
- ``Expr<'T>``

docsrc/content/abstraction-semigroup.fsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ From .Net/F#
4444
- ``Tuple<*>``
4545
- ``'T1* ... *'Tn``
4646
- ``Task<'T>``
47+
- ``ValueTask<'T>``
4748
- ``'T->'Semigroup``
4849
- ``Async<'T>``
4950
- ``Expr<'T>``

docsrc/content/extensions.fsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -259,14 +259,20 @@ Collections / Traversable types:
259259
* zip, unzip,
260260
* unionWith, union, intersectWith, intersect
261261
262-
Async and Tasks:
263-
================
262+
Async, Task and ValueTask:
263+
==========================
264264
* [ Task ](reference/fsharpplus-task.html)
265265
* map, map2, map3
266266
* apply
267267
* zip
268268
* join
269269
* ignore
270+
* [ ValueTask ](reference/fsharpplus-valueTask.html)
271+
* map, map2, map3
272+
* apply
273+
* zip
274+
* join
275+
* ignore
270276
* [ Async ](reference/fsharpplus-async.html)
271277
* map, map2
272278
* zip

src/FSharpPlus/Control/Applicative.fs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ type Apply =
3030
#if !FABLE_COMPILER
3131
static member ``<*>`` (f: Task<_> , x: Task<'T> , [<Optional>]_output: Task<'U> , [<Optional>]_mthd: Apply) = Task.apply f x : Task<'U>
3232
#endif
33+
#if NETSTANDARD2_1 && !FABLE_COMPILER
34+
static member ``<*>`` (f: ValueTask<_> , x: ValueTask<'T> , [<Optional>]_output: ValueTask<'U> , [<Optional>]_mthd: Apply) = ValueTask.apply f x : ValueTask<'U>
35+
#endif
3336
static member ``<*>`` (f: Async<_> , x: Async<'T> , [<Optional>]_output: Async<'U> , [<Optional>]_mthd: Apply) = Async.apply f x : Async<'U>
3437
static member ``<*>`` (f: option<_> , x: option<'T> , [<Optional>]_output: option<'U> , [<Optional>]_mthd: Apply) = Option.apply f x : option<'U>
3538
static member ``<*>`` (f: voption<_> , x: voption<'T> , [<Optional>]_output: voption<'U> , [<Optional>]_mthd: Apply) = ValueOption.apply f x : voption<'U>
@@ -82,6 +85,9 @@ type Lift2 =
8285
#if !FABLE_COMPILER
8386
static member Lift2 (f, (x: Task<'T> , y: Task<'U> ), _mthd: Lift2) = Task.map2 f x y
8487
#endif
88+
#if NETSTANDARD2_1 && !FABLE_COMPILER
89+
static member Lift2 (f, (x: ValueTask<'T> , y: ValueTask<'U> ), _mthd: Lift2) = ValueTask.map2 f x y
90+
#endif
8591
static member Lift2 (f, (x , y ), _mthd: Lift2) = Async.map2 f x y
8692
static member Lift2 (f, (x , y ), _mthd: Lift2) = Option.map2 f x y
8793

@@ -124,6 +130,9 @@ type Lift3 =
124130
#if !FABLE_COMPILER
125131
static member Lift3 (f, (x: Task<'T> , y: Task<'U> , z: Task<'V> ), _mthd: Lift3) = Task.map3 f x y z
126132
#endif
133+
#if NETSTANDARD2_1 && !FABLE_COMPILER
134+
static member Lift3 (f, (x: ValueTask<'T> , y: ValueTask<'U> , z: ValueTask<'V> ), _mthd: Lift3) = ValueTask.map3 f x y z
135+
#endif
127136
static member Lift3 (f, (x , y , z ), _mthd: Lift3) = Async.map3 f x y z
128137
static member Lift3 (f, (x , y , z ), _mthd: Lift3) = Option.map3 f x y z
129138

0 commit comments

Comments
 (0)