Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -323,12 +323,6 @@ module CancellableTaskValidation =
let x = Result.mapError List.singleton result
fun _ -> Task.FromResult(x)

/// <summary>Lifts an item to a CancellableTaskValidation.</summary>
/// <param name="item">The item to be the ok result of the CancellableTaskValidation.</param>
/// <returns>A CancellableTaskValidation with the item as the result.</returns>
let inline ok (item: 'ok) : CancellableTaskValidation<'ok, 'error> =
fun _ -> Task.FromResult(Ok item)

/// <summary>Lifts an item to a CancellableTaskValidation.</summary>
/// <param name="error">The item to be the error result of the CancellableTaskValidation.</param>
/// <returns>A CancellableTaskValidation with the item as the result.</returns>
Expand All @@ -338,11 +332,9 @@ module CancellableTaskValidation =

let inline ofChoice (choice: Choice<'ok, 'error>) : CancellableTaskValidation<'ok, 'error> =
match choice with
| Choice1Of2 x -> ok x
| Choice1Of2 x -> singleton x
| Choice2Of2 x -> error x

let inline retn (value: 'ok) : CancellableTaskValidation<'ok, 'error> = ok value


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

return!
result
|> Result.either ok (fun _ -> ifError)
|> Result.either singleton (fun _ -> ifError)
}

let inline orElseWith
Expand All @@ -493,7 +485,7 @@ module CancellableTaskValidation =

return!
match result with
| Ok x -> ok x
| Ok x -> singleton x
| Error err -> ifErrorFunc err
}

Expand Down Expand Up @@ -928,7 +920,7 @@ module CTVMergeSourcesExtensionsTV1CV2 =
(
left: 'Awaiter1,
[<InlineIfLambda>] right: CancellationToken -> 'Awaiter2
) =
) =
this.Source(
// cancellableTask.Run(
// cancellableTask.Bind(
Expand All @@ -950,17 +942,17 @@ module CTVMergeSourcesExtensionsTV1CV2 =
let! struct (l1, r1) = cancellableTask.MergeSources(left, right)
return Validation.zip l1 r1
}
// fun ct -> Awaitable.GetTaskAwaiter(IcedTasks.Polyfill.Task.Tasks.TaskBuilder.task {
// let r1 = right ct
// let l1 = left
// let! struct (l1, r1) = IcedTasks.Polyfill.Task.Tasks.TaskBuilder.task.MergeSources(l1, r1)
// fun ct -> Awaitable.GetTaskAwaiter(IcedTasks.Polyfill.Task.Tasks.TaskBuilder.task {
// let r1 = right ct
// let l1 = left
// let! struct (l1, r1) = IcedTasks.Polyfill.Task.Tasks.TaskBuilder.task.MergeSources(l1, r1)

// // let foo = cancellableTask.MergeSources(left, right) ct
// return Validation.zip l1 r1
// })
// |> ignore
// // let foo = cancellableTask.MergeSources(left, right) ct
// return Validation.zip l1 r1
// })
// |> ignore

// Unchecked.defaultof<_>
// Unchecked.defaultof<_>
)


Expand Down
4 changes: 2 additions & 2 deletions src/FsToolkit.ErrorHandling.JobResult/JobOption.fs
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@ module JobOption =
return! t
}

let inline retn x = job { return Some x }
let inline singleton x = job { return Some x }

let inline apply f x =
bind (fun f' -> bind (fun x' -> retn (f' x')) x) f
bind (fun f' -> bind (fun x' -> singleton (f' x')) x) f


/// <summary>
Expand Down
20 changes: 9 additions & 11 deletions src/FsToolkit.ErrorHandling.JobResult/JobResult.fs
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,10 @@ module JobResult =
|> Job.catch
|> Job.map Result.ofChoice

let inline retn x =
let inline singleton x =
Ok x
|> Job.result

let inline ok x = retn x

let inline returnError x =
Error x
|> Job.result
Expand All @@ -68,17 +66,17 @@ module JobResult =
/// <example>
/// <code>
/// JobResult.error "First" |> JobResult.orElse (JobResult.error "Second") // evaluates to Error ("Second")
/// JobResult.error "First" |> JobResult.orElse (JobResult.ok "Second") // evaluates to Ok ("Second")
/// JobResult.ok "First" |> JobResult.orElse (JobResult.error "Second") // evaluates to Ok ("First")
/// JobResult.ok "First" |> JobResult.orElse (JobResult.ok "Second") // evaluates to Ok ("First")
/// JobResult.error "First" |> JobResult.orElse (JobResult.singleton "Second") // evaluates to Ok ("Second")
/// JobResult.singleton "First" |> JobResult.orElse (JobResult.error "Second") // evaluates to Ok ("First")
/// JobResult.singleton "First" |> JobResult.orElse (JobResult.singleton "Second") // evaluates to Ok ("First")
/// </code>
/// </example>
/// <returns>
/// The result if the result is Ok, else returns <paramref name="ifError"/>.
/// </returns>
let inline orElse (ifError: Job<Result<'ok, 'error2>>) (result: Job<Result<'ok, 'error>>) =
result
|> Job.bind (Result.either ok (fun _ -> ifError))
|> Job.bind (Result.either singleton (fun _ -> ifError))

/// <summary>
/// Returns <paramref name="result"/> if it is <c>Ok</c>, otherwise executes <paramref name="ifErrorFunc"/> and returns the result.
Expand All @@ -91,9 +89,9 @@ module JobResult =
/// <example>
/// <code>
/// JobResult.error "First" |> JobResult.orElseWith (fun _ -> JobResult.error "Second") // evaluates to Error ("Second")
/// JobResult.error "First" |> JobResult.orElseWith (fun _ -> JobResult.ok "Second") // evaluates to Ok ("Second")
/// JobResult.ok "First" |> JobResult.orElseWith (fun _ -> JobResult.error "Second") // evaluates to Ok ("First")
/// JobResult.ok "First" |> JobResult.orElseWith (fun _ -> JobResult.ok "Second") // evaluates to Ok ("First")
/// JobResult.error "First" |> JobResult.orElseWith (fun _ -> JobResult.singleton "Second") // evaluates to Ok ("Second")
/// JobResult.singleton "First" |> JobResult.orElseWith (fun _ -> JobResult.error "Second") // evaluates to Ok ("First")
/// JobResult.singleton "First" |> JobResult.orElseWith (fun _ -> JobResult.singleton "Second") // evaluates to Ok ("First")
/// </code>
/// </example>
/// <returns>
Expand All @@ -104,7 +102,7 @@ module JobResult =
(result: Job<Result<'ok, 'error>>)
=
result
|> Job.bind (Result.either ok ifErrorFunc)
|> Job.bind (Result.either singleton ifErrorFunc)

/// Replaces the wrapped value with unit
let inline ignore<'ok, 'error> (jr: Job<Result<'ok, 'error>>) =
Expand Down
4 changes: 2 additions & 2 deletions src/FsToolkit.ErrorHandling.JobResult/JobResultOption.fs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ module JobResultOption =
let binder opt =
match opt with
| Some x -> f x
| None -> JobResult.retn None
| None -> JobResult.singleton None

JobResult.bind binder jro

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

let inline retn value =
let inline singleton value =
Some value
|> Ok
|> Job.result
Expand Down
2 changes: 1 addition & 1 deletion src/FsToolkit.ErrorHandling.JobResult/JobResultOptionCE.fs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ module JobResultOptionCE =
open Hopac

type JobResultOptionBuilder() =
member inline _.Return value = JobResultOption.retn value
member inline _.Return value = JobResultOption.singleton value
member inline _.ReturnFrom value = value
member inline _.Bind(result, [<InlineIfLambda>] binder) = JobResultOption.bind binder result

Expand Down
6 changes: 3 additions & 3 deletions src/FsToolkit.ErrorHandling.JobResult/List.fs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ module List =
}

let traverseJobResultM f xs =
traverseJobResultM' (JobResult.retn []) f xs
traverseJobResultM' (JobResult.singleton []) f xs

let sequenceJobResultM xs = traverseJobResultM id xs

Expand All @@ -40,7 +40,7 @@ module List =
let! fR = f x

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


let traverseJobResultA f xs =
traverseJobResultA' (JobResult.retn []) f xs
traverseJobResultA' (JobResult.singleton []) f xs

let sequenceJobResultA xs = traverseJobResultA id xs
8 changes: 4 additions & 4 deletions src/FsToolkit.ErrorHandling/Array.fs
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ module Array =
let sequenceResultM xs = traverseResultM id xs

let traverseAsyncResultM f xs =
traverseAsyncResultM' (AsyncResult.retn [||]) f xs
traverseAsyncResultM' (AsyncResult.ok [||]) f xs

let sequenceAsyncResultM xs = traverseAsyncResultM id xs

Expand Down Expand Up @@ -88,7 +88,7 @@ module Array =

match s, fR with
| Ok ys, Ok y ->
return! traverseAsyncResultA' (AsyncResult.retn (Array.append [| y |] ys)) f xs
return! traverseAsyncResultA' (AsyncResult.ok (Array.append [| y |] ys)) f xs
| Error errs, Error e ->
return!
traverseAsyncResultA'
Expand Down Expand Up @@ -127,7 +127,7 @@ module Array =
let sequenceValidationA xs = traverseValidationA id xs

let traverseAsyncResultA f xs =
traverseAsyncResultA' (AsyncResult.retn [||]) f xs
traverseAsyncResultA' (AsyncResult.ok [||]) f xs

let sequenceAsyncResultA xs = traverseAsyncResultA id xs

Expand Down Expand Up @@ -193,7 +193,7 @@ module Array =
let sequenceOptionM xs = traverseOptionM id xs

let traverseAsyncOptionM f xs =
traverseAsyncOptionM' (AsyncOption.retn [||]) f xs
traverseAsyncOptionM' (AsyncOption.some [||]) f xs

let sequenceAsyncOptionM xs = traverseAsyncOptionM id xs

Expand Down
9 changes: 0 additions & 9 deletions src/FsToolkit.ErrorHandling/Async.fs
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,6 @@ module Async =
value
|> async.Return

/// <summary>
/// Converts a value to an <c>Async</c> value
/// </summary>
/// <param name="value">The value to convert to an <c>Async</c> value.</param>
/// <returns>The <c>Async</c> value.</returns>
let inline retn (value: 'value) : Async<'value> =
value
|> async.Return

/// <summary>
/// Takes a transformation function and applies it to the value of an <c>Async</c> value.
/// </summary>
Expand Down
5 changes: 1 addition & 4 deletions src/FsToolkit.ErrorHandling/AsyncOption.fs
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,13 @@ module AsyncOption =
)
input

let inline retn (value: 'value) : Async<'value option> = Async.singleton (Some value)


let inline some (value: 'value) : Async<'value option> = Async.singleton (Some value)

let inline apply
(applier: Async<('input -> 'output) option>)
(input: Async<'input option>)
: Async<'output option> =
bind (fun f' -> bind (fun x' -> retn (f' x')) input) applier
bind (fun f' -> bind (fun x' -> some (f' x')) input) applier

/// <summary>
/// Returns result of running <paramref name="onSome"/> if it is <c>Some</c>, otherwise returns result of running <paramref name="onNone"/>
Expand Down
2 changes: 1 addition & 1 deletion src/FsToolkit.ErrorHandling/AsyncOptionCE.fs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ open System
module AsyncOptionCE =
type AsyncOptionBuilder() =

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

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

Expand Down
5 changes: 1 addition & 4 deletions src/FsToolkit.ErrorHandling/AsyncResult.fs
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,10 @@ open System.Threading.Tasks
[<RequireQualifiedAccess>]
module AsyncResult =


let inline retn (value: 'ok) : Async<Result<'ok, 'error>> =
let inline ok (value: 'ok) : Async<Result<'ok, 'error>> =
Ok value
|> Async.singleton

let inline ok (value: 'ok) : Async<Result<'ok, 'error>> = retn value

let inline returnError (error: 'error) : Async<Result<'ok, 'error>> =
Error error
|> Async.singleton
Expand Down
5 changes: 3 additions & 2 deletions src/FsToolkit.ErrorHandling/AsyncResultOption.fs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ module AsyncResultOption =
(fun opt ->
match opt with
| Some x -> binder x
| None -> AsyncResult.retn None
| None -> AsyncResult.ok None
)
input

Expand All @@ -40,7 +40,8 @@ module AsyncResultOption =
: Async<Result<'okOutput option, 'error>> =
AsyncResult.map3 (Option.map3 mapper) input1 input2 input3

let inline retn (value: 'ok) : Async<Result<'ok option, 'error>> = AsyncResult.retn (Some value)
let inline singleton (value: 'ok) : Async<Result<'ok option, 'error>> =
AsyncResult.ok (Some value)

let apply
(applier: Async<Result<('okInput -> 'okOutput) option, 'error>>)
Expand Down
2 changes: 1 addition & 1 deletion src/FsToolkit.ErrorHandling/AsyncResultOptionCE.fs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ module AsyncResultOptionCE =

type AsyncResultOptionBuilder() =
member inline _.Return(value: 'ok) : AsyncResultOption<'ok, 'error> =
AsyncResultOption.retn value
AsyncResultOption.singleton value

member inline _.ReturnFrom
(value: Async<Result<'ok option, 'error>>)
Expand Down
3 changes: 1 addition & 2 deletions src/FsToolkit.ErrorHandling/AsyncValidation.fs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ type AsyncValidation<'ok, 'error> = Async<Result<'ok, 'error list>>

[<RequireQualifiedAccess>]
module AsyncValidation =

let inline ok (value: 'ok) : AsyncValidation<'ok, 'error> =
Ok value
|> async.Return
Expand Down Expand Up @@ -42,8 +43,6 @@ module AsyncValidation =
)
}

let inline retn (value: 'ok) : AsyncValidation<'ok, 'error> = ok value

let inline returnError (error: 'error) : AsyncValidation<'ok, 'error> =
Error [ error ]
|> async.Return
Expand Down
2 changes: 1 addition & 1 deletion src/FsToolkit.ErrorHandling/AsyncValidationCE.fs
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ module AsyncValidationCE =
/// Method lets us transform data types into our internal representation.
/// </summary>
member inline _.Source(s: Validation<'ok, 'error>) : AsyncValidation<'ok, 'error> =
Async.retn s
Async.singleton s

#if !FABLE_COMPILER

Expand Down
8 changes: 4 additions & 4 deletions src/FsToolkit.ErrorHandling/List.fs
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ module List =
let sequenceResultM xs = traverseResultM id xs

let traverseAsyncResultM f xs =
traverseAsyncResultM' (AsyncResult.retn []) f xs
traverseAsyncResultM' (AsyncResult.ok []) f xs

let sequenceAsyncResultM xs = traverseAsyncResultM id xs

Expand Down Expand Up @@ -77,7 +77,7 @@ module List =
let! fR = f x

match s, fR with
| Ok ys, Ok y -> return! traverseAsyncResultA' (AsyncResult.retn (y :: ys)) f xs
| Ok ys, Ok y -> return! traverseAsyncResultA' (AsyncResult.ok (y :: ys)) f xs
| Error errs, Error e ->
return! traverseAsyncResultA' (AsyncResult.returnError (e :: errs)) f xs
| Ok _, Error e ->
Expand Down Expand Up @@ -115,7 +115,7 @@ module List =
let sequenceValidationA xs = traverseValidationA id xs

let traverseAsyncResultA f xs =
traverseAsyncResultA' (AsyncResult.retn []) f xs
traverseAsyncResultA' (AsyncResult.ok []) f xs

let sequenceAsyncResultA xs = traverseAsyncResultA id xs

Expand Down Expand Up @@ -175,7 +175,7 @@ module List =
let sequenceOptionM xs = traverseOptionM id xs

let traverseAsyncOptionM f xs =
traverseAsyncOptionM' (AsyncOption.retn []) f xs
traverseAsyncOptionM' (AsyncOption.some []) f xs

let sequenceAsyncOptionM xs = traverseAsyncOptionM id xs

Expand Down
2 changes: 1 addition & 1 deletion src/FsToolkit.ErrorHandling/ResultOption.fs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ module ResultOption =
/// </summary>
/// <param name="x">The value to convert.</param>
/// <returns>The value wrapped in an <c>Option</c> and then wrapped in a <c>Result</c>.</returns>
let inline retn x = Ok(Some x)
let inline singleton x = Ok(Some x)

/// <summary>
/// Applies a transformation function to a <c>Result</c> value that contains an <c>Option</c> value.
Expand Down
Loading
Loading