anchor.diff:          }
       let tom1 = modify tom |> snd
       Assert.AreEqual(1100, tom1.Salary)
  +
  +[<Test>]
  +let stateMonadOperators2() =
  +    let modify =
  +        State.state {
  +            let! oldSalary = Lens.getState Editor.salary
  +            do! Editor.salary += 1000
  +            return oldSalary
  +        }
  +    let oldSalary, promotedTom = modify tom
  +    printfn "Tom used to make %d, after promotion he now makes %d" oldSalary promotedTom.Salary
  +    Assert.AreEqual(4000, oldSalary)
  +    Assert.AreEqual(5000, promotedTom.Salary)
   
   type LensProperties =
       /// If the view does not change, neither should the source.
  
positive.code:     let giveRaise = Editor.salary += 1000
      let tom1 = { tom with Salary = tom.Salary + 1000 }
      let tom2 = tom |> Editor.salary += 1000
      Assert.AreEqual(tom1, tom2)
  
  [<Test>]
  let setValueOperator() =
  
negative.code: 
  [<Test>]
  let update() =
      let tom1 = { tom with Salary = tom.Salary + 1000 }
      let tom2 = tom |> Lens.update ((+) 1000) Editor.salary
      let tom3 = tom |> Editor.salary.Update ((+) 1000)
  