F# は流暢な DSL をサポートしており、流暢な API を備えた F# ライブラリがいくつかあります。F# の型システムは C# のものとは少し異なり、流暢な API を使用するとほとんどの違いが現れますが、それでも次のように動作します。
#r @"C:\Users\Ramon\Downloads\FluentValidation\FluentValidation\FluentValidation.dll"
open System
open FluentValidation
type Customer =
{ Surname : string
Forename : string
Company : string
Discout : int
Address : string
Postcode : string
Discount : int
HasDiscount : bool }
type IRuleBuilder<'T,'Property> with
member __.Ignore = ()
type CustomerValidator =
inherit AbstractValidator<Customer>
new () =
let beAValidPostcode postcode = true
base.RuleFor(fun customer -> customer.Surname).NotEmpty().Ignore
base.RuleFor(fun customer -> customer.Forename).NotEmpty().WithMessage("Please specify a first name").Ignore
base.RuleFor(fun customer -> customer.Company).NotNull().Ignore
base.RuleFor(fun customer -> customer.Discount).NotEqual(0).When(fun customer -> customer.HasDiscount).Ignore
base.RuleFor(fun customer -> customer.Address).Length(20, 250).Ignore
base.RuleFor(fun customer -> customer.Postcode).Must(beAValidPostcode).WithMessage("Please specify a valid postcode").Ignore
{ }