@@ -12,32 +12,32 @@ module JobResultCE =
12
12
member __.Return ( value : 'T ) : Job < Result < 'T , 'TError >> =
13
13
job.Return <| result.Return value
14
14
15
- member __.ReturnFrom
15
+ member inline __.ReturnFrom
16
16
( asyncResult : Async < Result < 'T , 'TError >>)
17
17
: Job < Result < 'T , 'TError >> =
18
18
asyncResult |> Job.fromAsync
19
19
20
- member __.ReturnFrom
20
+ member inline __.ReturnFrom
21
21
( jobResult : Job < Result < 'T , 'TError >>)
22
22
: Job < Result < 'T , 'TError >> =
23
23
jobResult
24
24
25
- member __.ReturnFrom
25
+ member inline __.ReturnFrom
26
26
( taskResult : Task < Result < 'T , 'TError >>)
27
27
: Job < Result < 'T , 'TError >> =
28
28
Job.awaitTask taskResult
29
29
30
- member __.ReturnFrom
30
+ member inline __.ReturnFrom
31
31
( taskResult : unit -> Task < Result < 'T , 'TError >>)
32
32
: Job < Result < 'T , 'TError >> =
33
33
Job.fromTask taskResult
34
34
35
- member __.ReturnFrom
35
+ member inline __.ReturnFrom
36
36
( result : Result < 'T , 'TError >)
37
37
: Job < Result < 'T , 'TError >> =
38
38
job.Return result
39
39
40
- member __.ReturnFrom
40
+ member inline __.ReturnFrom
41
41
( result : Choice < 'T , 'TError >)
42
42
: Job < Result < 'T , 'TError >> =
43
43
result
@@ -47,7 +47,7 @@ module JobResultCE =
47
47
member __.Zero () : Job < Result < unit , 'TError >> =
48
48
job.Return <| result.Zero ()
49
49
50
- member __.Bind
50
+ member inline __.Bind
51
51
( jobResult : Job < Result < 'T , 'TError >>,
52
52
binder : 'T -> Job < Result < 'U , 'TError >>)
53
53
: Job < Result < 'U , 'TError >> =
@@ -57,30 +57,30 @@ module JobResultCE =
57
57
| Ok x -> return ! binder x
58
58
| Error x -> return Error x
59
59
}
60
- member this.Bind
60
+ member inline this.Bind
61
61
( asyncResult : Async < Result < 'T , 'TError >>,
62
62
binder : 'T -> Job < Result < 'U , 'TError >>)
63
63
: Job < Result < 'U , 'TError >> =
64
64
this.Bind( Job.fromAsync asyncResult, binder)
65
65
66
- member this.Bind
66
+ member inline this.Bind
67
67
( taskResult : Task < Result < 'T , 'TError >>,
68
68
binder : 'T -> Job < Result < 'U , 'TError >>)
69
69
: Job < Result < 'U , 'TError >> =
70
70
this.Bind( Job.awaitTask taskResult, binder)
71
71
72
- member this.Bind
72
+ member inline this.Bind
73
73
( taskResult : unit -> Task < Result < 'T , 'TError >>,
74
74
binder : 'T -> Job < Result < 'U , 'TError >>)
75
75
: Job < Result < 'U , 'TError >> =
76
76
this.Bind( Job.fromTask taskResult, binder)
77
77
78
- member this.Bind
78
+ member inline this.Bind
79
79
( result : Result < 'T , 'TError >, binder : 'T -> Job < Result < 'U , 'TError >>)
80
80
: Job < Result < 'U , 'TError >> =
81
81
this.Bind( this.ReturnFrom result, binder)
82
82
83
- member this.Bind
83
+ member inline this.Bind
84
84
( result : Choice < 'T , 'TError >, binder : 'T -> Job < Result < 'U , 'TError >>)
85
85
: Job < Result < 'U , 'TError >> =
86
86
this.Bind( this.ReturnFrom result, binder)
@@ -141,17 +141,17 @@ module JobResultCE =
141
141
142
142
143
143
144
- member __.BindReturn ( x : Job < Result < 'T , 'U >>, f ) = JobResult.map f x
145
- member __.BindReturn ( x : Async < Result < 'T , 'U >>, f ) = __. BindReturn( x |> Job.fromAsync, f)
146
- member __.BindReturn ( x : Async < Choice < 'T , 'U >>, f ) = __. BindReturn( x |> Async.map Result.ofChoice, f)
147
- member __.BindReturn ( x : Result < 'T , 'U >, f ) = __. BindReturn( x |> Job.singleton, f)
148
- member __.BindReturn ( x : Choice < 'T , 'U >, f ) = __. BindReturn( x |> Result.ofChoice |> Job.singleton, f)
149
- member __.BindReturn ( x : Task < Result < 'T , 'U >>, f ) = __. BindReturn( x |> Job.awaitTask, f)
144
+ member inline __.BindReturn ( x : Job < Result < 'T , 'U >>, f ) = JobResult.map f x
145
+ member inline __.BindReturn ( x : Async < Result < 'T , 'U >>, f ) = __. BindReturn( x |> Job.fromAsync, f)
146
+ member inline __.BindReturn ( x : Async < Choice < 'T , 'U >>, f ) = __. BindReturn( x |> Async.map Result.ofChoice, f)
147
+ member inline __.BindReturn ( x : Result < 'T , 'U >, f ) = __. BindReturn( x |> Job.singleton, f)
148
+ member inline __.BindReturn ( x : Choice < 'T , 'U >, f ) = __. BindReturn( x |> Result.ofChoice |> Job.singleton, f)
149
+ member inline __.BindReturn ( x : Task < Result < 'T , 'U >>, f ) = __. BindReturn( x |> Job.awaitTask, f)
150
150
151
151
152
- member __.MergeSources ( t1 : Job < Result < 'T , 'U >>, t2 : Job < Result < 'T1 , 'U >>) = JobResult.zip t1 t2
153
- member __.MergeSources ( t1 : Task < Result < 'T , 'U >>, t2 : Task < Result < 'T1 , 'U >>) = JobResult.zip ( Job.awaitTask t1) ( Job.awaitTask t2)
154
- member __.MergeSources ( t1 : Async < Result < 'T , 'U >>, t2 : Async < Result < 'T1 , 'U >>) = JobResult.zip ( Job.fromAsync t1) ( Job.fromAsync t2)
152
+ member inline __.MergeSources ( t1 : Job < Result < 'T , 'U >>, t2 : Job < Result < 'T1 , 'U >>) = JobResult.zip t1 t2
153
+ member inline __.MergeSources ( t1 : Task < Result < 'T , 'U >>, t2 : Task < Result < 'T1 , 'U >>) = JobResult.zip ( Job.awaitTask t1) ( Job.awaitTask t2)
154
+ member inline __.MergeSources ( t1 : Async < Result < 'T , 'U >>, t2 : Async < Result < 'T1 , 'U >>) = JobResult.zip ( Job.fromAsync t1) ( Job.fromAsync t2)
155
155
156
156
157
157
@@ -162,37 +162,37 @@ module JobResultCEExtensions =
162
162
// overload resolution between Job<_> and Job<Result<_,_>>.
163
163
type JobResultBuilder with
164
164
165
- member __.ReturnFrom ( job' : Job < 'T >) : Job < Result < 'T , 'TError >> =
165
+ member inline __.ReturnFrom ( job' : Job < 'T >) : Job < Result < 'T , 'TError >> =
166
166
job {
167
167
let! x = job'
168
168
return Ok x
169
169
}
170
170
171
- member __.ReturnFrom ( async' : Async < 'T >) : Job < Result < 'T , 'TError >> =
171
+ member inline __.ReturnFrom ( async' : Async < 'T >) : Job < Result < 'T , 'TError >> =
172
172
job {
173
173
let! x = async' |> Job.fromAsync
174
174
return Ok x
175
175
}
176
176
177
- member __.ReturnFrom ( task : Task < 'T >) : Job < Result < 'T , 'TError >> =
177
+ member inline __.ReturnFrom ( task : Task < 'T >) : Job < Result < 'T , 'TError >> =
178
178
job {
179
179
let! x = task
180
180
return Ok x
181
181
}
182
182
183
- member __.ReturnFrom ( task : unit -> Task < 'T >) : Job < Result < 'T , 'TError >> =
183
+ member inline __.ReturnFrom ( task : unit -> Task < 'T >) : Job < Result < 'T , 'TError >> =
184
184
job {
185
185
let! x = task |> Job.fromTask
186
186
return Ok x
187
187
}
188
188
189
- member __.ReturnFrom ( task : Task ) : Job < Result < unit , 'TError >> =
189
+ member inline __.ReturnFrom ( task : Task ) : Job < Result < unit , 'TError >> =
190
190
job {
191
191
do ! Job.awaitUnitTask task
192
192
return result.Zero ()
193
193
}
194
194
195
- member this.Bind
195
+ member inline this.Bind
196
196
( job' : Job < 'T >, binder : 'T -> Job < Result < 'U , 'TError >>)
197
197
: Job < Result < 'U , 'TError >> =
198
198
let jResult = job {
@@ -201,81 +201,81 @@ module JobResultCEExtensions =
201
201
}
202
202
this.Bind( jResult, binder)
203
203
204
- member this.Bind
204
+ member inline this.Bind
205
205
( task : Async < 'T >, binder : 'T -> Job < Result < 'U , 'TError >>)
206
206
: Job < Result < 'U , 'TError >> =
207
207
this.Bind( Job.fromAsync task, binder)
208
208
209
- member this.Bind
209
+ member inline this.Bind
210
210
( task : Task < 'T >, binder : 'T -> Job < Result < 'U , 'TError >>)
211
211
: Job < Result < 'U , 'TError >> =
212
212
this.Bind( Job.awaitTask task, binder)
213
213
214
- member this.Bind
214
+ member inline this.Bind
215
215
( task : unit -> Task < 'T >, binder : 'T -> Job < Result < 'U , 'TError >>)
216
216
: Job < Result < 'U , 'TError >> =
217
217
this.Bind( Job.fromTask task, binder)
218
218
219
- member this.Bind
219
+ member inline this.Bind
220
220
( task : Task , binder : unit -> Job < Result < 'T , 'TError >>)
221
221
: Job < Result < 'T , 'TError >> =
222
222
this.Bind( Job.awaitUnitTask task, binder)
223
223
224
- member __.BindReturn ( x : Job < 'T >, f ) =
224
+ member inline __.BindReturn ( x : Job < 'T >, f ) =
225
225
__. BindReturn( x |> Job.map Result.Ok, f)
226
- member __.BindReturn ( x : Async < 'T >, f ) =
226
+ member inline __.BindReturn ( x : Async < 'T >, f ) =
227
227
__. BindReturn( x |> Async.map Result.Ok, f)
228
- member __.BindReturn ( x : Task < 'T >, f ) =
228
+ member inline __.BindReturn ( x : Task < 'T >, f ) =
229
229
__. BindReturn( x |> Task.map Result.Ok, f)
230
- member __.BindReturn ( x : Task , f ) =
230
+ member inline __.BindReturn ( x : Task , f ) =
231
231
__. BindReturn( x |> Task.ofUnit |> Task.map Result.Ok, f)
232
232
233
233
234
234
235
- member __.MergeSources ( t1 : Job < Result < 'T , 'U >>, t2 : Async < Result < 'T1 , 'U >>) = JobResult.zip ( t1) ( t2 |> Job.fromAsync)
236
- member __.MergeSources ( t1 : Async < Result < 'T , 'U >>, t2 : Job < Result < 'T1 , 'U >>) = JobResult.zip ( t1 |> Job.fromAsync) ( t2)
235
+ member inline __.MergeSources ( t1 : Job < Result < 'T , 'U >>, t2 : Async < Result < 'T1 , 'U >>) = JobResult.zip ( t1) ( t2 |> Job.fromAsync)
236
+ member inline __.MergeSources ( t1 : Async < Result < 'T , 'U >>, t2 : Job < Result < 'T1 , 'U >>) = JobResult.zip ( t1 |> Job.fromAsync) ( t2)
237
237
238
238
239
- member __.MergeSources ( t1 : Job < Result < 'T , 'U >>, t2 : Task < Result < 'T1 , 'U >>) = JobResult.zip ( t1) ( t2 |> Job.awaitTask)
240
- member __.MergeSources ( t1 : Task < Result < 'T , 'U >>, t2 : Job < Result < 'T1 , 'U >>) = JobResult.zip ( t1 |> Job.awaitTask) ( t2)
239
+ member inline __.MergeSources ( t1 : Job < Result < 'T , 'U >>, t2 : Task < Result < 'T1 , 'U >>) = JobResult.zip ( t1) ( t2 |> Job.awaitTask)
240
+ member inline __.MergeSources ( t1 : Task < Result < 'T , 'U >>, t2 : Job < Result < 'T1 , 'U >>) = JobResult.zip ( t1 |> Job.awaitTask) ( t2)
241
241
242
- member __.MergeSources ( t1 : Task < Result < 'T , 'U >>, t2 : Async < Result < 'T1 , 'U >>) = AsyncResult.zip ( t1 |> Async.AwaitTask) ( t2) |> Job.fromAsync
243
- member __.MergeSources ( t1 : Async < Result < 'T , 'U >>, t2 : Task < Result < 'T1 , 'U >>) = AsyncResult.zip ( t1) ( t2 |> Async.AwaitTask) |> Job.fromAsync
242
+ member inline __.MergeSources ( t1 : Task < Result < 'T , 'U >>, t2 : Async < Result < 'T1 , 'U >>) = AsyncResult.zip ( t1 |> Async.AwaitTask) ( t2) |> Job.fromAsync
243
+ member inline __.MergeSources ( t1 : Async < Result < 'T , 'U >>, t2 : Task < Result < 'T1 , 'U >>) = AsyncResult.zip ( t1) ( t2 |> Async.AwaitTask) |> Job.fromAsync
244
244
245
- member __.MergeSources ( t1 : Task < Result < 'T , 'U >>, t2 : Result < 'T1 , 'U >) = AsyncResult.zip ( t1 |> Async.AwaitTask) ( t2 |> Async.singleton) |> Job.fromAsync
246
- member __.MergeSources ( t1 : Result < 'T , 'U >, t2 : Task < Result < 'T1 , 'U >>) = AsyncResult.zip ( t1 |> Async.singleton) ( t2 |> Async.AwaitTask) |> Job.fromAsync
245
+ member inline __.MergeSources ( t1 : Task < Result < 'T , 'U >>, t2 : Result < 'T1 , 'U >) = AsyncResult.zip ( t1 |> Async.AwaitTask) ( t2 |> Async.singleton) |> Job.fromAsync
246
+ member inline __.MergeSources ( t1 : Result < 'T , 'U >, t2 : Task < Result < 'T1 , 'U >>) = AsyncResult.zip ( t1 |> Async.singleton) ( t2 |> Async.AwaitTask) |> Job.fromAsync
247
247
248
248
249
- member __.MergeSources ( t1 : Async < Result < 'T , 'U >>, t2 : Async < 'T1 >) = AsyncResult.zip t1 ( t2 |> Async.map Result.Ok) |> Job.fromAsync
250
- member __.MergeSources ( t1 : Async < 'T >, t2 : Async < Result < 'T1 , 'U >>) = AsyncResult.zip ( t1 |> Async.map Result.Ok) t2 |> Job.fromAsync
249
+ member inline __.MergeSources ( t1 : Async < Result < 'T , 'U >>, t2 : Async < 'T1 >) = AsyncResult.zip t1 ( t2 |> Async.map Result.Ok) |> Job.fromAsync
250
+ member inline __.MergeSources ( t1 : Async < 'T >, t2 : Async < Result < 'T1 , 'U >>) = AsyncResult.zip ( t1 |> Async.map Result.Ok) t2 |> Job.fromAsync
251
251
252
- member __.MergeSources ( t1 : Job < Result < 'T , 'U >>, t2 : Result < 'T1 , 'U >) = JobResult.zip t1 ( t2 |> Job.singleton)
253
- member __.MergeSources ( t1 : Result < 'T , 'U >, t2 : Job < Result < 'T1 , 'U >>) = JobResult.zip ( t1 |> Job.singleton) t2
254
- member __.MergeSources ( t1 : Result < 'T , 'U >, t2 : Result < 'T1 , 'U >) = AsyncResult.zip ( t1 |> Async.singleton) ( t2 |> Async.singleton) |> Job.fromAsync
252
+ member inline __.MergeSources ( t1 : Job < Result < 'T , 'U >>, t2 : Result < 'T1 , 'U >) = JobResult.zip t1 ( t2 |> Job.singleton)
253
+ member inline __.MergeSources ( t1 : Result < 'T , 'U >, t2 : Job < Result < 'T1 , 'U >>) = JobResult.zip ( t1 |> Job.singleton) t2
254
+ member inline __.MergeSources ( t1 : Result < 'T , 'U >, t2 : Result < 'T1 , 'U >) = AsyncResult.zip ( t1 |> Async.singleton) ( t2 |> Async.singleton) |> Job.fromAsync
255
255
256
- member __.MergeSources ( t1 : Async < Result < 'T , 'U >>, t2 : Result < 'T1 , 'U >) = AsyncResult.zip t1 ( t2 |> Async.singleton) |> Job.fromAsync
257
- member __.MergeSources ( t1 : Result < 'T , 'U >, t2 : Async < Result < 'T1 , 'U >>) = AsyncResult.zip ( t1 |> Async.singleton) t2 |> Job.fromAsync
256
+ member inline __.MergeSources ( t1 : Async < Result < 'T , 'U >>, t2 : Result < 'T1 , 'U >) = AsyncResult.zip t1 ( t2 |> Async.singleton) |> Job.fromAsync
257
+ member inline __.MergeSources ( t1 : Result < 'T , 'U >, t2 : Async < Result < 'T1 , 'U >>) = AsyncResult.zip ( t1 |> Async.singleton) t2 |> Job.fromAsync
258
258
259
259
260
- member __.MergeSources ( t1 : Async < Result < 'T , 'U >>, t2 : Choice < 'T1 , 'U >) = AsyncResult.zip t1 ( t2 |> Result.ofChoice |> Async.singleton) |> Job.fromAsync
261
- member __.MergeSources ( t1 : Choice < 'T , 'U >, t2 : Async < Result < 'T1 , 'U >>) = AsyncResult.zip ( t1 |> Result.ofChoice |> Async.singleton) t2 |> Job.fromAsync
260
+ member inline __.MergeSources ( t1 : Async < Result < 'T , 'U >>, t2 : Choice < 'T1 , 'U >) = AsyncResult.zip t1 ( t2 |> Result.ofChoice |> Async.singleton) |> Job.fromAsync
261
+ member inline __.MergeSources ( t1 : Choice < 'T , 'U >, t2 : Async < Result < 'T1 , 'U >>) = AsyncResult.zip ( t1 |> Result.ofChoice |> Async.singleton) t2 |> Job.fromAsync
262
262
263
- member __.MergeSources ( t1 : Job < Result < 'T , 'U >>, t2 : Choice < 'T1 , 'U >) = JobResult.zip t1 ( t2 |> Result.ofChoice |> Job.singleton)
264
- member __.MergeSources ( t1 : Choice < 'T , 'U >, t2 : Job < Result < 'T1 , 'U >>) = JobResult.zip ( t1 |> Result.ofChoice |> Job.singleton) t2
265
- member __.MergeSources ( t1 : Choice < 'T , 'U >, t2 : Choice < 'T1 , 'U >) = AsyncResult.zip ( t1 |> Result.ofChoice |> Async.singleton) ( t2 |> Result.ofChoice |> Async.singleton) |> Job.fromAsync
263
+ member inline __.MergeSources ( t1 : Job < Result < 'T , 'U >>, t2 : Choice < 'T1 , 'U >) = JobResult.zip t1 ( t2 |> Result.ofChoice |> Job.singleton)
264
+ member inline __.MergeSources ( t1 : Choice < 'T , 'U >, t2 : Job < Result < 'T1 , 'U >>) = JobResult.zip ( t1 |> Result.ofChoice |> Job.singleton) t2
265
+ member inline __.MergeSources ( t1 : Choice < 'T , 'U >, t2 : Choice < 'T1 , 'U >) = AsyncResult.zip ( t1 |> Result.ofChoice |> Async.singleton) ( t2 |> Result.ofChoice |> Async.singleton) |> Job.fromAsync
266
266
267
- member __.MergeSources ( t1 : Choice < 'T , 'U >, t2 : Result < 'T1 , 'U >) = AsyncResult.zip ( t1 |> Result.ofChoice |> Async.singleton) ( t2 |> Async.singleton) |> Job.fromAsync
268
- member __.MergeSources ( t1 : Result < 'T , 'U >, t2 : Choice < 'T1 , 'U >) = AsyncResult.zip ( t1 |> Async.singleton) ( t2 |> Result.ofChoice |> Async.singleton) |> Job.fromAsync
267
+ member inline __.MergeSources ( t1 : Choice < 'T , 'U >, t2 : Result < 'T1 , 'U >) = AsyncResult.zip ( t1 |> Result.ofChoice |> Async.singleton) ( t2 |> Async.singleton) |> Job.fromAsync
268
+ member inline __.MergeSources ( t1 : Result < 'T , 'U >, t2 : Choice < 'T1 , 'U >) = AsyncResult.zip ( t1 |> Async.singleton) ( t2 |> Result.ofChoice |> Async.singleton) |> Job.fromAsync
269
269
270
270
271
271
[<AutoOpen>]
272
272
module JobResultCEExtensions2 =
273
273
// Having Async<_> members as extensions gives them lower priority in
274
274
// overload resolution between Async<_> and Async<Result<_,_>>.
275
275
type JobResultBuilder with
276
- member __.MergeSources ( t1 : Job < 'T >, t2 : Job < 'T1 >) = JobResult.zip ( t1 |> Job.map Result.Ok) ( t2 |> Job.map Result.Ok)
277
- member __.MergeSources ( t1 : Async < 'T >, t2 : Async < 'T1 >) = AsyncResult.zip ( t1 |> Async.map Result.Ok) ( t2 |> Async.map Result.Ok) |> Job.fromAsync
278
- member __.MergeSources ( t1 : Task < 'T >, t2 : Task < 'T1 >) = TaskResult.zip ( t1 |> Task.map Result.Ok) ( t2 |> Task.map Result.Ok) |> Job.awaitTask
276
+ member inline __.MergeSources ( t1 : Job < 'T >, t2 : Job < 'T1 >) = JobResult.zip ( t1 |> Job.map Result.Ok) ( t2 |> Job.map Result.Ok)
277
+ member inline __.MergeSources ( t1 : Async < 'T >, t2 : Async < 'T1 >) = AsyncResult.zip ( t1 |> Async.map Result.Ok) ( t2 |> Async.map Result.Ok) |> Job.fromAsync
278
+ member inline __.MergeSources ( t1 : Task < 'T >, t2 : Task < 'T1 >) = TaskResult.zip ( t1 |> Task.map Result.Ok) ( t2 |> Task.map Result.Ok) |> Job.awaitTask
279
279
280
280
281
281
let jobResult = JobResultBuilder()
0 commit comments