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