2012-10-04 2 views
0

나는이 같은 스타일을 통과 지속에하자 식을 변환하는 방법을 알고 싶어요 :표현식을 cps로 변환하는 방법은 무엇입니까?

(let ([a (lambda (x) (+ 1 x))]) (a 4)) 

이 좀 examples.Thanks을 제시해주십시오. 그래서, 지금의 위 CPS-변환, 우리가하자

((lambda (a) 
    (a 4)) 
(lambda (x) 
    (+ 1 x))) 

:

답변

3

첫째, let이 매크로 확장 다음에 떨어져 있음을 알아

((lambda (a k) 
    (a 4 k)) 
(lambda (x k) 
    (+ 1 x k)) 
k) 

k 마지막 줄에는 원래 let이 계속됩니다. k0가 원래의 연속이다

((lambda (a k1) 
    (a 4 k1)) 
(lambda (x k2) 
    (+ 1 x k2)) 
k0) 

: 모든 k의 너무 혼란 보면

, 여기에 동일한 코드입니다. 두 경우 모두

, 나는 +도 유사에 .... 정말 도움이 Thanks.It

+0

추가의 결과를 전달하는 지속을 위해 CPS는 변환 된 것으로 가정합니다. – user1657564

관련 문제