Rekursion (operational)

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



Johannes Waldmann 2011-01-23