Umrechnung zw. Continuations (I)

id2mc :: Name -> ExpValue -> Transform ExpCPS
id2mc c = \ v-> return $ MultiApp (Ref c) [v]
Anwendung bei Abstraktion
 Abs x b -> \ k -> do
     c <- fresh "k"
     b' <- cps b ( id2mc c )
     k $ MultiAbs [ x, c ] b' -- Ansatz
tatsächlich statt letzter Zeile:
     fresh_let (return $ MultiAbs [f,c] b') k
mit Hilfsfunktion
fresh_let t k  = do 
     f <- fresh "l" ; a <- t
     b <- k ( Ref f ) ; return $ Let f a b



Johannes Waldmann 2014-03-31