anchor.diff:      let inline collect xs = 
           Seq.fold (fun result next -> 
               match result, next with
  -            | OK(rs, m1), OK(r, m2) -> OK(r :: rs, m1 @ m2)
  -            | OK(_, m1), Fail(m2) | Fail(m1), OK(_, m2) -> Fail(m1 @ m2)
  +            | Ok(rs, m1), Ok(r, m2) -> Ok(r :: rs, m1 @ m2)
  +            | Ok(_, m1), Fail(m2) | Fail(m1), Ok(_, m2) -> Fail(m1 @ m2)
               | Fail(m1), Fail(m2) -> Fail(m1 @ m2)) (ok []) xs
           |> lift List.rev
   
  
positive.code: 
      /// Appends the given messages with the messages in the given result.
      let inline mergeMessages msgs result = 
          let inline fSuccess (x, msgs2) = OK(x, msgs @ msgs2)
          let inline fFailure errs = Fail(errs @ msgs)
          either fSuccess fFailure result
  
  
negative.code:     [<Extension>]
      static member inline Flatten(value) : Result<seq<'a>,'b>=
          match value with
          | Result.Ok(values:Result<'a,'b> seq, msgs:'b list) -> 
              match collect values with
              | Result.Ok(values,msgs) -> Ok(values |> List.toSeq,msgs)
              | Result.Fail(msgs:'b list) -> Fail msgs
          | Result.Fail(msgs:'b list) -> Fail msgs
  
  