anchor.diff:  
   *)
   
  -let name : ParaResult<string> = para {
  +let name2 : ParaResult<string> = para {
     let! nameVal = ParaValue.get "name" obj
     return! ParaValue.asString nameVal
   }
   
  -match name with
  +match name2 with
   | Ok(nm) -> printfn "Ship's name: %s" nm
   | Error(err) -> printfn "%s" err
   
  
positive.code: // Find all the optional properties on ships. Append a question mark after the
  // property name to signify that the property is optional.
  para {
    let obj = ParaValue.Parse data
    let! ships = obj / "ship" |> ParaValue.flatMap asRecord
    let required, optional = findOptional ships
    required |> Seq.iter (printfn "%s")
  
negative.code: *)
  
  para {
    let! (pips : ParaValue[]) = ParaValue.getAll "ship" shipsObj
    let! (ships : (string * int)[]) = ParaValue.reduce parseShip pips
    for (name, strength) in (Array.sortByDescending snd ships) do
      printfn "Ship: %s. Strength: %d" name strength
  