Skip to content

Commit 256efdb

Browse files
authored
[v5] API Consolidation Around retn/singleton/ok/some (#287)
* Removed Async.retn since it duplicates Async.singleton * Converted all uses of retn, ok, and some into singleton * Reverted some instances of singleton back to ok/some
1 parent edc9ae0 commit 256efdb

37 files changed

+136
-166
lines changed

src/FsToolkit.ErrorHandling.IcedTasks/CancellableTaskValidationCE.fs

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -323,12 +323,6 @@ module CancellableTaskValidation =
323323
let x = Result.mapError List.singleton result
324324
fun _ -> Task.FromResult(x)
325325

326-
/// <summary>Lifts an item to a CancellableTaskValidation.</summary>
327-
/// <param name="item">The item to be the ok result of the CancellableTaskValidation.</param>
328-
/// <returns>A CancellableTaskValidation with the item as the result.</returns>
329-
let inline ok (item: 'ok) : CancellableTaskValidation<'ok, 'error> =
330-
fun _ -> Task.FromResult(Ok item)
331-
332326
/// <summary>Lifts an item to a CancellableTaskValidation.</summary>
333327
/// <param name="error">The item to be the error result of the CancellableTaskValidation.</param>
334328
/// <returns>A CancellableTaskValidation with the item as the result.</returns>
@@ -338,11 +332,9 @@ module CancellableTaskValidation =
338332

339333
let inline ofChoice (choice: Choice<'ok, 'error>) : CancellableTaskValidation<'ok, 'error> =
340334
match choice with
341-
| Choice1Of2 x -> ok x
335+
| Choice1Of2 x -> singleton x
342336
| Choice2Of2 x -> error x
343337

344-
let inline retn (value: 'ok) : CancellableTaskValidation<'ok, 'error> = ok value
345-
346338

347339
let inline mapError
348340
([<InlineIfLambda>] errorMapper: 'errorInput -> 'errorOutput)
@@ -480,7 +472,7 @@ module CancellableTaskValidation =
480472

481473
return!
482474
result
483-
|> Result.either ok (fun _ -> ifError)
475+
|> Result.either singleton (fun _ -> ifError)
484476
}
485477

486478
let inline orElseWith
@@ -493,7 +485,7 @@ module CancellableTaskValidation =
493485

494486
return!
495487
match result with
496-
| Ok x -> ok x
488+
| Ok x -> singleton x
497489
| Error err -> ifErrorFunc err
498490
}
499491

@@ -928,7 +920,7 @@ module CTVMergeSourcesExtensionsTV1CV2 =
928920
(
929921
left: 'Awaiter1,
930922
[<InlineIfLambda>] right: CancellationToken -> 'Awaiter2
931-
) =
923+
) =
932924
this.Source(
933925
// cancellableTask.Run(
934926
// cancellableTask.Bind(
@@ -950,17 +942,17 @@ module CTVMergeSourcesExtensionsTV1CV2 =
950942
let! struct (l1, r1) = cancellableTask.MergeSources(left, right)
951943
return Validation.zip l1 r1
952944
}
953-
// fun ct -> Awaitable.GetTaskAwaiter(IcedTasks.Polyfill.Task.Tasks.TaskBuilder.task {
954-
// let r1 = right ct
955-
// let l1 = left
956-
// let! struct (l1, r1) = IcedTasks.Polyfill.Task.Tasks.TaskBuilder.task.MergeSources(l1, r1)
945+
// fun ct -> Awaitable.GetTaskAwaiter(IcedTasks.Polyfill.Task.Tasks.TaskBuilder.task {
946+
// let r1 = right ct
947+
// let l1 = left
948+
// let! struct (l1, r1) = IcedTasks.Polyfill.Task.Tasks.TaskBuilder.task.MergeSources(l1, r1)
957949

958-
// // let foo = cancellableTask.MergeSources(left, right) ct
959-
// return Validation.zip l1 r1
960-
// })
961-
// |> ignore
950+
// // let foo = cancellableTask.MergeSources(left, right) ct
951+
// return Validation.zip l1 r1
952+
// })
953+
// |> ignore
962954

963-
// Unchecked.defaultof<_>
955+
// Unchecked.defaultof<_>
964956
)
965957

966958

src/FsToolkit.ErrorHandling.JobResult/JobOption.fs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@ module JobOption =
2020
return! t
2121
}
2222

23-
let inline retn x = job { return Some x }
23+
let inline singleton x = job { return Some x }
2424

2525
let inline apply f x =
26-
bind (fun f' -> bind (fun x' -> retn (f' x')) x) f
26+
bind (fun f' -> bind (fun x' -> singleton (f' x')) x) f
2727

2828

2929
/// <summary>

src/FsToolkit.ErrorHandling.JobResult/JobResult.fs

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,10 @@ module JobResult =
3939
|> Job.catch
4040
|> Job.map Result.ofChoice
4141

42-
let inline retn x =
42+
let inline singleton x =
4343
Ok x
4444
|> Job.result
4545

46-
let inline ok x = retn x
47-
4846
let inline returnError x =
4947
Error x
5048
|> Job.result
@@ -68,17 +66,17 @@ module JobResult =
6866
/// <example>
6967
/// <code>
7068
/// JobResult.error "First" |> JobResult.orElse (JobResult.error "Second") // evaluates to Error ("Second")
71-
/// JobResult.error "First" |> JobResult.orElse (JobResult.ok "Second") // evaluates to Ok ("Second")
72-
/// JobResult.ok "First" |> JobResult.orElse (JobResult.error "Second") // evaluates to Ok ("First")
73-
/// JobResult.ok "First" |> JobResult.orElse (JobResult.ok "Second") // evaluates to Ok ("First")
69+
/// JobResult.error "First" |> JobResult.orElse (JobResult.singleton "Second") // evaluates to Ok ("Second")
70+
/// JobResult.singleton "First" |> JobResult.orElse (JobResult.error "Second") // evaluates to Ok ("First")
71+
/// JobResult.singleton "First" |> JobResult.orElse (JobResult.singleton "Second") // evaluates to Ok ("First")
7472
/// </code>
7573
/// </example>
7674
/// <returns>
7775
/// The result if the result is Ok, else returns <paramref name="ifError"/>.
7876
/// </returns>
7977
let inline orElse (ifError: Job<Result<'ok, 'error2>>) (result: Job<Result<'ok, 'error>>) =
8078
result
81-
|> Job.bind (Result.either ok (fun _ -> ifError))
79+
|> Job.bind (Result.either singleton (fun _ -> ifError))
8280

8381
/// <summary>
8482
/// Returns <paramref name="result"/> if it is <c>Ok</c>, otherwise executes <paramref name="ifErrorFunc"/> and returns the result.
@@ -91,9 +89,9 @@ module JobResult =
9189
/// <example>
9290
/// <code>
9391
/// JobResult.error "First" |> JobResult.orElseWith (fun _ -> JobResult.error "Second") // evaluates to Error ("Second")
94-
/// JobResult.error "First" |> JobResult.orElseWith (fun _ -> JobResult.ok "Second") // evaluates to Ok ("Second")
95-
/// JobResult.ok "First" |> JobResult.orElseWith (fun _ -> JobResult.error "Second") // evaluates to Ok ("First")
96-
/// JobResult.ok "First" |> JobResult.orElseWith (fun _ -> JobResult.ok "Second") // evaluates to Ok ("First")
92+
/// JobResult.error "First" |> JobResult.orElseWith (fun _ -> JobResult.singleton "Second") // evaluates to Ok ("Second")
93+
/// JobResult.singleton "First" |> JobResult.orElseWith (fun _ -> JobResult.error "Second") // evaluates to Ok ("First")
94+
/// JobResult.singleton "First" |> JobResult.orElseWith (fun _ -> JobResult.singleton "Second") // evaluates to Ok ("First")
9795
/// </code>
9896
/// </example>
9997
/// <returns>
@@ -104,7 +102,7 @@ module JobResult =
104102
(result: Job<Result<'ok, 'error>>)
105103
=
106104
result
107-
|> Job.bind (Result.either ok ifErrorFunc)
105+
|> Job.bind (Result.either singleton ifErrorFunc)
108106

109107
/// Replaces the wrapped value with unit
110108
let inline ignore<'ok, 'error> (jr: Job<Result<'ok, 'error>>) =

src/FsToolkit.ErrorHandling.JobResult/JobResultOption.fs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ module JobResultOption =
99
let binder opt =
1010
match opt with
1111
| Some x -> f x
12-
| None -> JobResult.retn None
12+
| None -> JobResult.singleton None
1313

1414
JobResult.bind binder jro
1515

@@ -19,7 +19,7 @@ module JobResultOption =
1919
let inline map3 ([<InlineIfLambda>] f) xJRO yJRO zJRO =
2020
JobResult.map3 (Option.map3 f) xJRO yJRO zJRO
2121

22-
let inline retn value =
22+
let inline singleton value =
2323
Some value
2424
|> Ok
2525
|> Job.result

src/FsToolkit.ErrorHandling.JobResult/JobResultOptionCE.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ module JobResultOptionCE =
55
open Hopac
66

77
type JobResultOptionBuilder() =
8-
member inline _.Return value = JobResultOption.retn value
8+
member inline _.Return value = JobResultOption.singleton value
99
member inline _.ReturnFrom value = value
1010
member inline _.Bind(result, [<InlineIfLambda>] binder) = JobResultOption.bind binder result
1111

src/FsToolkit.ErrorHandling.JobResult/List.fs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ module List =
2424
}
2525

2626
let traverseJobResultM f xs =
27-
traverseJobResultM' (JobResult.retn []) f xs
27+
traverseJobResultM' (JobResult.singleton []) f xs
2828

2929
let sequenceJobResultM xs = traverseJobResultM id xs
3030

@@ -40,7 +40,7 @@ module List =
4040
let! fR = f x
4141

4242
match s, fR with
43-
| Ok ys, Ok y -> return! traverseJobResultA' (JobResult.retn (y :: ys)) f xs
43+
| Ok ys, Ok y -> return! traverseJobResultA' (JobResult.singleton (y :: ys)) f xs
4444
| Error errs, Error e ->
4545
return! traverseJobResultA' (JobResult.returnError (e :: errs)) f xs
4646
| Ok _, Error e -> return! traverseJobResultA' (JobResult.returnError [ e ]) f xs
@@ -49,6 +49,6 @@ module List =
4949

5050

5151
let traverseJobResultA f xs =
52-
traverseJobResultA' (JobResult.retn []) f xs
52+
traverseJobResultA' (JobResult.singleton []) f xs
5353

5454
let sequenceJobResultA xs = traverseJobResultA id xs

src/FsToolkit.ErrorHandling/Array.fs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ module Array =
5353
let sequenceResultM xs = traverseResultM id xs
5454

5555
let traverseAsyncResultM f xs =
56-
traverseAsyncResultM' (AsyncResult.retn [||]) f xs
56+
traverseAsyncResultM' (AsyncResult.ok [||]) f xs
5757

5858
let sequenceAsyncResultM xs = traverseAsyncResultM id xs
5959

@@ -88,7 +88,7 @@ module Array =
8888

8989
match s, fR with
9090
| Ok ys, Ok y ->
91-
return! traverseAsyncResultA' (AsyncResult.retn (Array.append [| y |] ys)) f xs
91+
return! traverseAsyncResultA' (AsyncResult.ok (Array.append [| y |] ys)) f xs
9292
| Error errs, Error e ->
9393
return!
9494
traverseAsyncResultA'
@@ -127,7 +127,7 @@ module Array =
127127
let sequenceValidationA xs = traverseValidationA id xs
128128

129129
let traverseAsyncResultA f xs =
130-
traverseAsyncResultA' (AsyncResult.retn [||]) f xs
130+
traverseAsyncResultA' (AsyncResult.ok [||]) f xs
131131

132132
let sequenceAsyncResultA xs = traverseAsyncResultA id xs
133133

@@ -193,7 +193,7 @@ module Array =
193193
let sequenceOptionM xs = traverseOptionM id xs
194194

195195
let traverseAsyncOptionM f xs =
196-
traverseAsyncOptionM' (AsyncOption.retn [||]) f xs
196+
traverseAsyncOptionM' (AsyncOption.some [||]) f xs
197197

198198
let sequenceAsyncOptionM xs = traverseAsyncOptionM id xs
199199

src/FsToolkit.ErrorHandling/Async.fs

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,6 @@ module Async =
1515
value
1616
|> async.Return
1717

18-
/// <summary>
19-
/// Converts a value to an <c>Async</c> value
20-
/// </summary>
21-
/// <param name="value">The value to convert to an <c>Async</c> value.</param>
22-
/// <returns>The <c>Async</c> value.</returns>
23-
let inline retn (value: 'value) : Async<'value> =
24-
value
25-
|> async.Return
26-
2718
/// <summary>
2819
/// Takes a transformation function and applies it to the value of an <c>Async</c> value.
2920
/// </summary>

src/FsToolkit.ErrorHandling/AsyncOption.fs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,13 @@ module AsyncOption =
2121
)
2222
input
2323

24-
let inline retn (value: 'value) : Async<'value option> = Async.singleton (Some value)
25-
26-
2724
let inline some (value: 'value) : Async<'value option> = Async.singleton (Some value)
2825

2926
let inline apply
3027
(applier: Async<('input -> 'output) option>)
3128
(input: Async<'input option>)
3229
: Async<'output option> =
33-
bind (fun f' -> bind (fun x' -> retn (f' x')) input) applier
30+
bind (fun f' -> bind (fun x' -> some (f' x')) input) applier
3431

3532
/// <summary>
3633
/// Returns result of running <paramref name="onSome"/> if it is <c>Some</c>, otherwise returns result of running <paramref name="onNone"/>

src/FsToolkit.ErrorHandling/AsyncOptionCE.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ open System
77
module AsyncOptionCE =
88
type AsyncOptionBuilder() =
99

10-
member inline _.Return(value: 'value) : Async<'value option> = AsyncOption.retn value
10+
member inline _.Return(value: 'value) : Async<'value option> = AsyncOption.some value
1111

1212
member inline _.ReturnFrom(value: Async<'value option>) : Async<'value option> = value
1313

0 commit comments

Comments
 (0)