anchor.diff:          rcrArgs [Expr.Var(x); body] "L"
         | Patterns.Application(e1, e2) ->
           rcrArgs [e1; e2] "A"
  +      | Patterns.Let(x, e1, e2) ->
  +        rcr varsCount (Expr.Application(Expr.Lambda(x, e2), e1))
         | _ ->
           failwithf "Pattern %A not supported!" e
       rcr Map.empty p |> fst
  
positive.code:         rcrArgs [Expr.Var(x); body] "L"
        | Patterns.Application(e1, e2) ->
          rcrArgs [e1; e2] "A"
        | _ ->
          failwithf "Substitution %A not supported!" e
      rcr s
  
negative.code:     | OperatorName opname -> opname
      | "D"                 -> "D"
      | "AD" | "AD_N" | "AD_V"
      | "AD_C" | "AD_I"     -> "AD"
      | "GetArray"          -> "G"
      | "length"            -> "S"
      | "build"             -> "B"
      | "Fst"               -> "_1"
      | "Snd"               -> "_2"
      | n -> failwithf "Operator %s not supported!" n
    let compileSubs (s: Expr): string = 
      let rec rcr (e: Expr): string = 
  