anchor.diff:  type ErrorMessage = ErrorMessage of string
   
   [<StructuredFormatDisplay("{AsString}")>]
  -type ValidationResult<'T> =
  -    | Success of 'T
  +type ValidationResult<'a> =
  +    | Success of 'a
       | Error of ErrorMessage
       override this.ToString() =
           match this with
  
positive.code: 
      let error = Error
  
      let errorFromString<'T> : string -> ValidationResult<'T> = ErrorMessage >> Error
  
      let doubleMap successHandler errorHandler = function
          | Success x -> successHandler x
  
negative.code: 
      let (>>=) x f = bind f x
  
      let extract<'a> : ValidationResult<'a> -> 'a = doubleMap id (fun (ErrorMessage e) -> invalidOp e)
  
      let (>=>) f g = f >> bind g
  
      let apply fV xV =
          match fV, xV with
          | Success f, Success x -> Success (f x)
          | Error e, _ | _, Error e -> Error e
  
      let (<*>) = apply
  
  