anchor.diff:          | _                  -> None)
   
       member this.evalLambda syn expr args =
  +      let local_eng = Engine()
         // FIX: use local environment
  -      List.zip syn args |> List.map (fun (k,v) -> this.setValue k v) |> List.fold (fun acc _ -> acc) |> ignore
  +      for k, v in List.zip syn args do
  +        this.setValue k v
  +      this.evaluate expr local_eng
  +
  +    member this.evaluate expr local =
         this.Evaluate expr
   
       member this.Evaluate (expr: expr) : expr option =
  
positive.code:         return Boolean (lhs = rhs)
        }
  
      member private this.getValue k =
        match env.TryGetValue(k) with
        | (true, v) -> Some v
  
negative.code:   let ParseFromFile (path: string) : Result<expr, ErrorKind> =
      ParseFromString <| System.IO.File.ReadAllText path
  
    type Engine() =
      let env = new Dictionary<string, expr>()
  
      member this.Default () =
        let defineOperator name f = env.Add(name, Operator(operator_t(f)))
  
        defineOperator "set" <| fun args -> maybe {
  