Idee: eine Speicherstelle anlegen und als Vorwärtsreferenz auf das Resultat der Rekursion benutzen
evaluate env x = case x of ...
  Rec n ( Abs x b ) -> 
    new ( ValErr "Rec" ) >>= \ a -> 
    with ( evaluate 
             ( extend env n ... ) 
             ( Abs x ... ) ) $ \ v ->
    put a v >>= \ () ->
    return v