Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding uncontentious methods from RFC FS-1004 #1350

Merged
merged 8 commits into from
Jul 22, 2016
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 @@ -13,10 +13,7 @@ type EmailValidation=
| Empty
| NoAt

module Results=
let bind f m = match m with Error e -> Error e | Ok x -> f x

open Results
open Result

[<TestFixture>]
type ResultTests() =
Expand All @@ -35,10 +32,54 @@ type ResultTests() =
let actual = validate_email email
Assert.AreEqual(expected, actual)

let toUpper (v:string) = v.ToUpper()

let shouldBeOkWithValue expected maybeOk = match maybeOk with | Error e-> failwith "Expected Ok, got Error!" | Ok v->Assert.AreEqual(expected, v)

let shouldBeErrorWithValue expected maybeError = match maybeError with | Error e-> Assert.AreEqual(expected, e) | Ok v-> failwith "Expected Error, got Ok!"

let addOneOk (v:int) = Ok (v+1)

[<Test>]
member this.CanChainTogetherSuccessiveValidations() =
test_validate_email "" (Error Empty)
test_validate_email "something_else" (Error NoAt)
test_validate_email "some@email.com" (Ok "some@email.com")

[<Test>]
member this.MapWillTransformOkValues() =
Ok "some@email.com"
|> map toUpper
|> shouldBeOkWithValue "SOME@EMAIL.COM"

[<Test>]
member this.MapWillNotTransformErrorValues() =
Error "my error"
|> map toUpper
|> shouldBeErrorWithValue "my error"

[<Test>]
member this.MapErrorWillTransformErrorValues() =
Error "my error"
|> mapError toUpper
|> shouldBeErrorWithValue "MY ERROR"

[<Test>]
member this.MapErrorWillNotTransformOkValues() =
Ok "some@email.com"
|> mapError toUpper
|> shouldBeOkWithValue "some@email.com"

[<Test>]
member this.BindShouldModifyOkValue() =
Ok 42
|> bind addOneOk
|> shouldBeOkWithValue 43

[<Test>]
member this.BindErrorShouldNotModifyError() =
Error "Error"
|> bind addOneOk
|> shouldBeErrorWithValue "Error"


Original file line number Diff line number Diff line change
Expand Up @@ -2446,6 +2446,13 @@ Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: Int32 GetHashCode(
Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.String ToString()
Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.Type GetType()
Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: Void .ctor()
Microsoft.FSharp.Core.ResultModule: Boolean Equals(System.Object)
Microsoft.FSharp.Core.ResultModule: Int32 GetHashCode()
Microsoft.FSharp.Core.ResultModule: Microsoft.FSharp.Core.FSharpResult`2[T,TResult] MapError[TError,TResult,T](Microsoft.FSharp.Core.FSharpFunc`2[TError,TResult], Microsoft.FSharp.Core.FSharpResult`2[T,TError])
Microsoft.FSharp.Core.ResultModule: Microsoft.FSharp.Core.FSharpResult`2[TResult,TError] Bind[T,TResult,TError](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpResult`2[TResult,TError]], Microsoft.FSharp.Core.FSharpResult`2[T,TError])
Microsoft.FSharp.Core.ResultModule: Microsoft.FSharp.Core.FSharpResult`2[TResult,TError] Map[T,TResult,TError](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Core.FSharpResult`2[T,TError])
Microsoft.FSharp.Core.ResultModule: System.String ToString()
Microsoft.FSharp.Core.ResultModule: System.Type GetType()
Microsoft.FSharp.Core.SealedAttribute: Boolean Equals(System.Object)
Microsoft.FSharp.Core.SealedAttribute: Boolean Match(System.Object)
Microsoft.FSharp.Core.SealedAttribute: Boolean Value
Expand Down
7 changes: 7 additions & 0 deletions src/fsharp/FSharp.Core.Unittests/SurfaceArea.coreclr.fs
Original file line number Diff line number Diff line change
Expand Up @@ -2789,6 +2789,13 @@ Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.Object get_
Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.String ToString()
Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.Type GetType()
Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: Void .ctor()
Microsoft.FSharp.Core.ResultModule: Boolean Equals(System.Object)
Microsoft.FSharp.Core.ResultModule: Int32 GetHashCode()
Microsoft.FSharp.Core.ResultModule: Microsoft.FSharp.Core.FSharpResult`2[T,TResult] MapError[TError,TResult,T](Microsoft.FSharp.Core.FSharpFunc`2[TError,TResult], Microsoft.FSharp.Core.FSharpResult`2[T,TError])
Microsoft.FSharp.Core.ResultModule: Microsoft.FSharp.Core.FSharpResult`2[TResult,TError] Bind[T,TResult,TError](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpResult`2[TResult,TError]], Microsoft.FSharp.Core.FSharpResult`2[T,TError])
Microsoft.FSharp.Core.ResultModule: Microsoft.FSharp.Core.FSharpResult`2[TResult,TError] Map[T,TResult,TError](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Core.FSharpResult`2[T,TError])
Microsoft.FSharp.Core.ResultModule: System.String ToString()
Microsoft.FSharp.Core.ResultModule: System.Type GetType()
Microsoft.FSharp.Core.SealedAttribute: Boolean Equals(System.Object)
Microsoft.FSharp.Core.SealedAttribute: Boolean IsDefaultAttribute()
Microsoft.FSharp.Core.SealedAttribute: Boolean Match(System.Object)
Expand Down
7 changes: 7 additions & 0 deletions src/fsharp/FSharp.Core.Unittests/SurfaceArea.net20.fs
Original file line number Diff line number Diff line change
Expand Up @@ -2721,6 +2721,13 @@ Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.Object get_
Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.String ToString()
Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.Type GetType()
Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: Void .ctor()
Microsoft.FSharp.Core.ResultModule: Boolean Equals(System.Object)
Microsoft.FSharp.Core.ResultModule: Int32 GetHashCode()
Microsoft.FSharp.Core.ResultModule: Microsoft.FSharp.Core.FSharpResult`2[T,TResult] MapError[TError,TResult,T](Microsoft.FSharp.Core.FSharpFunc`2[TError,TResult], Microsoft.FSharp.Core.FSharpResult`2[T,TError])
Microsoft.FSharp.Core.ResultModule: Microsoft.FSharp.Core.FSharpResult`2[TResult,TError] Bind[T,TResult,TError](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpResult`2[TResult,TError]], Microsoft.FSharp.Core.FSharpResult`2[T,TError])
Microsoft.FSharp.Core.ResultModule: Microsoft.FSharp.Core.FSharpResult`2[TResult,TError] Map[T,TResult,TError](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Core.FSharpResult`2[T,TError])
Microsoft.FSharp.Core.ResultModule: System.String ToString()
Microsoft.FSharp.Core.ResultModule: System.Type GetType()
Microsoft.FSharp.Core.SealedAttribute: Boolean Equals(System.Object)
Microsoft.FSharp.Core.SealedAttribute: Boolean IsDefaultAttribute()
Microsoft.FSharp.Core.SealedAttribute: Boolean Match(System.Object)
Expand Down
7 changes: 7 additions & 0 deletions src/fsharp/FSharp.Core.Unittests/SurfaceArea.net40.fs
Original file line number Diff line number Diff line change
Expand Up @@ -2889,6 +2889,13 @@ Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.Object get_
Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.String ToString()
Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.Type GetType()
Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: Void .ctor()
Microsoft.FSharp.Core.ResultModule: Boolean Equals(System.Object)
Microsoft.FSharp.Core.ResultModule: Int32 GetHashCode()
Microsoft.FSharp.Core.ResultModule: Microsoft.FSharp.Core.FSharpResult`2[T,TResult] MapError[TError,TResult,T](Microsoft.FSharp.Core.FSharpFunc`2[TError,TResult], Microsoft.FSharp.Core.FSharpResult`2[T,TError])
Microsoft.FSharp.Core.ResultModule: Microsoft.FSharp.Core.FSharpResult`2[TResult,TError] Bind[T,TResult,TError](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpResult`2[TResult,TError]], Microsoft.FSharp.Core.FSharpResult`2[T,TError])
Microsoft.FSharp.Core.ResultModule: Microsoft.FSharp.Core.FSharpResult`2[TResult,TError] Map[T,TResult,TError](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Core.FSharpResult`2[T,TError])
Microsoft.FSharp.Core.ResultModule: System.String ToString()
Microsoft.FSharp.Core.ResultModule: System.Type GetType()
Microsoft.FSharp.Core.SealedAttribute: Boolean Equals(System.Object)
Microsoft.FSharp.Core.SealedAttribute: Boolean IsDefaultAttribute()
Microsoft.FSharp.Core.SealedAttribute: Boolean Match(System.Object)
Expand Down
7 changes: 7 additions & 0 deletions src/fsharp/FSharp.Core.Unittests/SurfaceArea.portable259.fs
Original file line number Diff line number Diff line change
Expand Up @@ -2856,6 +2856,13 @@ Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.Object get_
Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.String ToString()
Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.Type GetType()
Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: Void .ctor()
Microsoft.FSharp.Core.ResultModule: Boolean Equals(System.Object)
Microsoft.FSharp.Core.ResultModule: Int32 GetHashCode()
Microsoft.FSharp.Core.ResultModule: Microsoft.FSharp.Core.FSharpResult`2[T,TResult] MapError[TError,TResult,T](Microsoft.FSharp.Core.FSharpFunc`2[TError,TResult], Microsoft.FSharp.Core.FSharpResult`2[T,TError])
Microsoft.FSharp.Core.ResultModule: Microsoft.FSharp.Core.FSharpResult`2[TResult,TError] Bind[T,TResult,TError](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpResult`2[TResult,TError]], Microsoft.FSharp.Core.FSharpResult`2[T,TError])
Microsoft.FSharp.Core.ResultModule: Microsoft.FSharp.Core.FSharpResult`2[TResult,TError] Map[T,TResult,TError](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Core.FSharpResult`2[T,TError])
Microsoft.FSharp.Core.ResultModule: System.String ToString()
Microsoft.FSharp.Core.ResultModule: System.Type GetType()
Microsoft.FSharp.Core.SealedAttribute: Boolean Equals(System.Object)
Microsoft.FSharp.Core.SealedAttribute: Boolean IsDefaultAttribute()
Microsoft.FSharp.Core.SealedAttribute: Boolean Match(System.Object)
Expand Down
7 changes: 7 additions & 0 deletions src/fsharp/FSharp.Core.Unittests/SurfaceArea.portable47.fs
Original file line number Diff line number Diff line change
Expand Up @@ -2857,6 +2857,13 @@ Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.Object get_
Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.String ToString()
Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.Type GetType()
Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: Void .ctor()
Microsoft.FSharp.Core.ResultModule: Boolean Equals(System.Object)
Microsoft.FSharp.Core.ResultModule: Int32 GetHashCode()
Microsoft.FSharp.Core.ResultModule: Microsoft.FSharp.Core.FSharpResult`2[T,TResult] MapError[TError,TResult,T](Microsoft.FSharp.Core.FSharpFunc`2[TError,TResult], Microsoft.FSharp.Core.FSharpResult`2[T,TError])
Microsoft.FSharp.Core.ResultModule: Microsoft.FSharp.Core.FSharpResult`2[TResult,TError] Bind[T,TResult,TError](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpResult`2[TResult,TError]], Microsoft.FSharp.Core.FSharpResult`2[T,TError])
Microsoft.FSharp.Core.ResultModule: Microsoft.FSharp.Core.FSharpResult`2[TResult,TError] Map[T,TResult,TError](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Core.FSharpResult`2[T,TError])
Microsoft.FSharp.Core.ResultModule: System.String ToString()
Microsoft.FSharp.Core.ResultModule: System.Type GetType()
Microsoft.FSharp.Core.SealedAttribute: Boolean Equals(System.Object)
Microsoft.FSharp.Core.SealedAttribute: Boolean IsDefaultAttribute()
Microsoft.FSharp.Core.SealedAttribute: Boolean Match(System.Object)
Expand Down
7 changes: 7 additions & 0 deletions src/fsharp/FSharp.Core.Unittests/SurfaceArea.portable7.fs
Original file line number Diff line number Diff line change
Expand Up @@ -2869,6 +2869,13 @@ Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.Object get_
Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.String ToString()
Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.Type GetType()
Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: Void .ctor()
Microsoft.FSharp.Core.ResultModule: Boolean Equals(System.Object)
Microsoft.FSharp.Core.ResultModule: Int32 GetHashCode()
Microsoft.FSharp.Core.ResultModule: Microsoft.FSharp.Core.FSharpResult`2[T,TResult] MapError[TError,TResult,T](Microsoft.FSharp.Core.FSharpFunc`2[TError,TResult], Microsoft.FSharp.Core.FSharpResult`2[T,TError])
Microsoft.FSharp.Core.ResultModule: Microsoft.FSharp.Core.FSharpResult`2[TResult,TError] Bind[T,TResult,TError](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpResult`2[TResult,TError]], Microsoft.FSharp.Core.FSharpResult`2[T,TError])
Microsoft.FSharp.Core.ResultModule: Microsoft.FSharp.Core.FSharpResult`2[TResult,TError] Map[T,TResult,TError](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Core.FSharpResult`2[T,TError])
Microsoft.FSharp.Core.ResultModule: System.String ToString()
Microsoft.FSharp.Core.ResultModule: System.Type GetType()
Microsoft.FSharp.Core.SealedAttribute: Boolean Equals(System.Object)
Microsoft.FSharp.Core.SealedAttribute: Boolean IsDefaultAttribute()
Microsoft.FSharp.Core.SealedAttribute: Boolean Match(System.Object)
Expand Down
7 changes: 7 additions & 0 deletions src/fsharp/FSharp.Core.Unittests/SurfaceArea.portable78.fs
Original file line number Diff line number Diff line change
Expand Up @@ -2856,6 +2856,13 @@ Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.Object get_
Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.String ToString()
Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.Type GetType()
Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: Void .ctor()
Microsoft.FSharp.Core.ResultModule: Boolean Equals(System.Object)
Microsoft.FSharp.Core.ResultModule: Int32 GetHashCode()
Microsoft.FSharp.Core.ResultModule: Microsoft.FSharp.Core.FSharpResult`2[T,TResult] MapError[TError,TResult,T](Microsoft.FSharp.Core.FSharpFunc`2[TError,TResult], Microsoft.FSharp.Core.FSharpResult`2[T,TError])
Microsoft.FSharp.Core.ResultModule: Microsoft.FSharp.Core.FSharpResult`2[TResult,TError] Bind[T,TResult,TError](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpResult`2[TResult,TError]], Microsoft.FSharp.Core.FSharpResult`2[T,TError])
Microsoft.FSharp.Core.ResultModule: Microsoft.FSharp.Core.FSharpResult`2[TResult,TError] Map[T,TResult,TError](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Core.FSharpResult`2[T,TError])
Microsoft.FSharp.Core.ResultModule: System.String ToString()
Microsoft.FSharp.Core.ResultModule: System.Type GetType()
Microsoft.FSharp.Core.SealedAttribute: Boolean Equals(System.Object)
Microsoft.FSharp.Core.SealedAttribute: Boolean IsDefaultAttribute()
Microsoft.FSharp.Core.SealedAttribute: Boolean Match(System.Object)
Expand Down
6 changes: 6 additions & 0 deletions src/fsharp/FSharp.Core/FSharp.Core.fsproj
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,12 @@
<Compile Include="option.fs">
<Link>Collections/option.fs</Link>
</Compile>
<Compile Include="result.fsi">
<Link>Collections/result.fsi</Link>
</Compile>
<Compile Include="result.fs">
<Link>Collections/result.fs</Link>
</Compile>
<Compile Include="collections.fsi">
<Link>Collections/collections.fsi</Link>
</Compile>
Expand Down
15 changes: 15 additions & 0 deletions src/fsharp/FSharp.Core/result.fs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
// Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.

namespace Microsoft.FSharp.Core

[<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
module Result =

[<CompiledName("Map")>]
let map f inp = match inp with Error e -> Error e | Ok x -> Ok (f x)

[<CompiledName("MapError")>]
let mapError f inp = match inp with Error e -> Error (f e) | Ok x -> Ok x

[<CompiledName("Bind")>]
let bind f inp = match inp with Error e -> Error e | Ok x -> f x
30 changes: 30 additions & 0 deletions src/fsharp/FSharp.Core/result.fsi
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
// Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.

namespace Microsoft.FSharp.Core

open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators

[<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
module Result =

/// <summary><c>map f inp</c> evaluates to <c>match inp with Error e -> Error e | Ok x -> Ok (f x)</c>.</summary>
Copy link
Contributor

@dsyme dsyme Jul 22, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These summaries should be English-language. I know they're using the style from the "Option" summaries, but those ones should really be changed too :)

The MSDN docs use summary strings like Transforms an option value by using a specified mapping function.

/// <param name="mapping">A function to apply to the OK result value.</param>
/// <param name="result">The input result.</param>
/// <returns>A result of the input value after applying the mapping function, or Error if the input is Error.</returns>
[<CompiledName("Map")>]
val map : mapping:('T -> 'U) -> result:Result<'T, 'TError> -> Result<'U, 'TError>

/// <summary><c>map f inp</c> evaluates to <c>match inp with Error x -> Error (f x) | Ok v -> Ok v</c>.</summary>
/// <param name="mapping">A function to apply to the OK result value.</param>
/// <param name="result">The input result.</param>
/// <returns>A result of the input value after applying the mapping function, or Error if the input is Error.</returns>
[<CompiledName("MapError")>]
val mapError: mapping:('TError -> 'U) -> result:Result<'T, 'TError> -> Result<'T, 'U>

/// <summary><c>bind f inp</c> evaluates to <c>match inp with Error e -> Error e | Ok x -> f x</c></summary>
/// <param name="binder">A function that takes the value of type T from a result and transforms it into
/// a result containing a value of type U.</param>
/// <param name="result">The input result.</param>
/// <returns>A result of the output type of the binder.</returns>
[<CompiledName("Bind")>]
val bind: binder:('T -> Result<'U, 'TError>) -> result:Result<'T, 'TError> -> Result<'U, 'TError>
7 changes: 7 additions & 0 deletions tests/fsharpqa/Source/Misc/LongSourceFile01.fs
Original file line number Diff line number Diff line change
Expand Up @@ -2475,6 +2475,13 @@ Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.Object get_
Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.String ToString()
Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: System.Type GetType()
Microsoft.FSharp.Core.RequiresExplicitTypeArgumentsAttribute: Void .ctor()
Microsoft.FSharp.Core.ResultModule: Boolean Equals(System.Object)
Microsoft.FSharp.Core.ResultModule: Int32 GetHashCode()
Microsoft.FSharp.Core.ResultModule: Microsoft.FSharp.Core.FSharpResult`2[T,TResult] MapError[TError,TResult,T](Microsoft.FSharp.Core.FSharpFunc`2[TError,TResult], Microsoft.FSharp.Core.FSharpResult`2[T,TError])
Microsoft.FSharp.Core.ResultModule: Microsoft.FSharp.Core.FSharpResult`2[TResult,TError] Bind[T,TResult,TError](Microsoft.FSharp.Core.FSharpFunc`2[T,Microsoft.FSharp.Core.FSharpResult`2[TResult,TError]], Microsoft.FSharp.Core.FSharpResult`2[T,TError])
Microsoft.FSharp.Core.ResultModule: Microsoft.FSharp.Core.FSharpResult`2[TResult,TError] Map[T,TResult,TError](Microsoft.FSharp.Core.FSharpFunc`2[T,TResult], Microsoft.FSharp.Core.FSharpResult`2[T,TError])
Microsoft.FSharp.Core.ResultModule: System.String ToString()
Microsoft.FSharp.Core.ResultModule: System.Type GetType()
Microsoft.FSharp.Core.SealedAttribute: Boolean Equals(System.Object)
Microsoft.FSharp.Core.SealedAttribute: Boolean IsDefaultAttribute()
Microsoft.FSharp.Core.SealedAttribute: Boolean Match(System.Object)
Expand Down