anchor.diff:  
       type ConvResult =
       | AsExpression of Expression
  -    | AsLetRecExpression of ParameterExpression * Expression * Expression
  +    | AsLetRecFunction of ParameterExpression * Expression * Expression
  +//    | AsLetRecRecord of ParameterExpression * Expression * Expression
   
       let asExpr x = AsExpression x
       let asExpression x = (x :> Expression)
  
positive.code:         Expression.Lambda(linqExpr, Expression.Parameter(typeof<unit>)) |> asExpression
  
      let CompileImpl (e: #Expr, eraseEquality) = 
  //       let ty = e.Type
  //       let e = Expr.NewDelegate(GetFuncType([|typeof<unit>; ty |]), [new Var("unit",typeof<unit>)],e)
         let linqExpr = Conv (e,eraseEquality)
         let linqExpr = (linqExpr :?> LambdaExpression)
         let d = linqExpr.Compile()
  
negative.code:                             state) |> asExpression;
  
                      if letrec.IsSome then
                          AsLetRecFunction (theFuncObject, assignToConstruction, assignState)
                      else
                          Expression.Block (
                              [ theFuncObject ],
  