type Rule = string -> bool * string
let rules : Rule list = [
fun s -> s.Split(' ').Length = 3, "Must be three words"
fun s -> s.Length <= 30, "Max lengh is 30 characters"
fun s -> s |> Seq.filter System.Char.IsLetter |> Seq.forall System.Char.IsUpper, "All letters must be caps"
let buildValidator (rules : Rule list) =
|> List.reduce(fun firstRule secondRule ->
let passed, error = firstRule word
let passed, error = secondRule word
if passed then true, "" else false, error
let validate = buildValidator rules
let word = "HELLO FrOM F#"