anchor.diff:      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 
  -            Choice2Of2 "Too young!"
  +            Failure "Too young!"
           elif p.Age > 40 then
  -            Choice2Of2 "Too old!"
  +            Failure "Too old!"
           else
  -            Choice1Of2 p
  +            Success p
   
       let checkClothes (p: Person) =
           if p.Gender = Male && not (p.Clothes.Contains "Tie") then
  -            Choice2Of2 "Smarten up!"
  +            Failure "Smarten up!"
           elif p.Gender = Female && p.Clothes.Contains "Trainers" then
  -            Choice2Of2 "Wear high heels"
  +            Failure "Wear high heels"
           else
  -            Choice1Of2 p
  +            Success p
   
       let checkSobriety (p: Person) =
           match p.Sobriety with
  -        | Drunk | Paralytic | Unconscious -> Choice2Of2 "Sober up!"
  -        | _ -> Choice1Of2 p
  +        | Drunk | Paralytic | Unconscious -> Failure "Sober up!"
  +        | _ -> Success p
   
   // Now let's compose some validation checks
   
  
positive.code: 
  [<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)
  
  
negative.code: // And the use? Dave tried the second nightclub after a few more drinks in the pub
  [<Test>]
  let part2() =
      ClubTropicana.costToEnter { Dave with Sobriety = Paralytic } |> shouldEqual (Failure ["Too old!"; "Sober up!"])
      ClubTropicana.costToEnter Ruby |> shouldEqual (Success 0m)
  
  (**
   *
  