anchor.diff:  
   [<Test>]
   let part3() =
  -    GayBar.costToEnter { Person.Gender = Male; Age = 59; Clothes = set ["Jeans"]; Sobriety = Paralytic } |> shouldEqual (Choice2Of2 ["Too old!"; "Smarten up!"; "Sober up!"])
  -    GayBar.costToEnter { Person.Gender = Male; Age = 25; Clothes = set ["Tie"]; Sobriety = Sober } |> shouldEqual (Choice1Of2 26.5m)
  +    GayBar.costToEnter { Person.Gender = Male; Age = 59; Clothes = set ["Jeans"]; Sobriety = Paralytic } |> shouldEqual (Failure ["Too old!"; "Smarten up!"; "Sober up!"])
  +    GayBar.costToEnter { Person.Gender = Male; Age = 25; Clothes = set ["Tie"]; Sobriety = Sober } |> shouldEqual (Success 26.5m)
   
  
positive.code:     open Club
      let checkGender (p: Person) =
          match p.Gender with
          | Male -> Choice1Of2 p
          | _ -> Choice2Of2 "Men only"
  
      let costToEnter p =
          [checkAge; checkClothes; checkSobriety; checkGender]
  
negative.code:     Sobriety: Sobriety
  }
  
  let Success = Choice1Of2
  let Failure = Choice2Of2
  
  // Let's define the checks that *all* nightclubs make!
  module Club =
      let checkAge (p: Person) =
          if p.Age < 18 then 
              Failure "Too young!"
          elif p.Age > 40 then
              Failure "Too old!"
          else
              Success p
  
      let checkClothes (p: Person) =
          if p.Gender = Male && not (p.Clothes.Contains "Tie") then
              Failure "Smarten up!"
          elif p.Gender = Female && p.Clothes.Contains "Trainers" then
              Failure "Wear high heels"
          else
              Success p
  
      let checkSobriety (p: Person) =
          match p.Sobriety with
          | Drunk | Paralytic | Unconscious -> Failure "Sober up!"
          | _ -> Success p
  
  // Now let's compose some validation checks
  
  