FSValidation 0.0.2

There is a newer version of this package available.
See the version list below for details.
dotnet add package FSValidation --version 0.0.2                
NuGet\Install-Package FSValidation -Version 0.0.2                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="FSValidation" Version="0.0.2" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add FSValidation --version 0.0.2                
#r "nuget: FSValidation, 0.0.2"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install FSValidation as a Cake Addin
#addin nuget:?package=FSValidation&version=0.0.2

// Install FSValidation as a Cake Tool
#tool nuget:?package=FSValidation&version=0.0.2                

Validation Build Status

Example Usage

First, we create some basic validation functions using the existing Result<_, _> type in F#.

Note that the Error case returns a string list. This is necessary.

let validateAge (age: int) =
    if age = 21
    then Ok 21
    else Error ["Invalid Age"]

let validateHeight (height: float) =
    if height = 180.
    then Ok 180.
    else Error ["Invalid Height"]

let validateName (name: string) =
    if name = "Alice"
    then Ok "Alice"
    else Error ["Invalid Name"]

Then, we create a composite data type that we want to validate.

type Data = {
    Age: int
    Height: float
    Name: string
    NotValidated: string
}

Now, we can use our validation computation expression to compose our existing validators.

let validate (data: Data) =
    validation {
        validate age in validateAge data.Age
        validate height in validateHeight data.Height
        validate name in validateName data.Name

        return {
            data with
                Age = age
                Height = height
                Name = name
        }
    }

We can now call our validate method:

validate {
    Age = 21
    Height = 180.
    Name = "Alice"
    NotValidated = "hello"
}

which will give us the following output:

Ok ({
    Age = 21
    Height = 180.
    Name = "Alice"
    NotValidated = "hello"
})

If we can validate with invalid data:

validate {
    Age = 20
    Height = 180.
    Name = "Bob"
    NotValidated = "hello"
}

we get the following result:

Error [
    "Invalid Age"
    "Invalid Name"
]

Take a look at sample.fsx or our unit tests for more examples.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on FSValidation:

Package Downloads
GraphQL.FSharp

GraphQL.FSharp library.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.0.10 992 5/13/2019
0.0.9 1,097 5/3/2019
0.0.8 583 4/11/2019
0.0.7 2,305 4/2/2019
0.0.6 4,549 3/21/2019
0.0.5 3,003 3/4/2019
0.0.4 1,022 3/2/2019
0.0.3 597 2/27/2019
0.0.2 574 2/27/2019
0.0.1 553 2/27/2019