8

, 내가 무엇을 관리 redexes (람다)를 결정 약간의 문제가있어 다음과 같습니다 CPS 변환에 의해 소개CPS 변환 후 관리 리덱스 란 정확히 무엇입니까? 정확히 계획 및 <a href="http://en.wikipedia.org/wiki/Continuation-passing_style" rel="nofollow noreferrer">CPS</a> 전환의 맥락에서

  • 모든 람다 표현식은
  • CPS 변환에 의해 도입 된 람다 식은 "손으로"또는 더 똑똑한 CPS 변환기를 통해 변환 한 경우 작성하지 않았을 수 있습니다.

가능하면 좋은 참고 자료를 환영합니다.

답변

4

Redex는 "reducible expression"을 나타내며 값이 아닙니다. 따라서 람다는 redex가 아니라 호출입니다.
CPS에서 관리 대상 redex는 연산자가 연속 람다 인 redex입니다. 이러한 redexes는 당신이 전화하고있는 기능을 알고 있기 때문에 즉시 감소 될 수 있습니다.
예를 들어, ((lambda (u) ...) foo)은 관리 자료이지만, (k foo)은 아닙니다.

4

내 대답을 찾은 것 같습니다. (편집 :. 내가 대신 dimvar의 답변을 수락, 그것은 더 짧고 맞습니다)

완전히 CPS는, 적어도 하나의 프로 시저 리턴 지점이있을 것이다되지 입력 프로그램을 가정은 CPS가 연속으로 변환 할 변환. 따라서이 연속은 모두 의 변환으로 인해 발생합니다. 필요하기 때문에 항상 손으로 변환 할 때도이 작업을 수행해야합니다. 따라서 관리 리디렉션은 실제로 필요하지 않은 CPS 변환에 의해 도입 된 람다 (두 번째 정의)입니다.

나는이 (강조 광산)처럼 설명하는 paper 발견 : 아주 인상적 플로리다에서 ATION 람다의 생성, CPS에

순진한 λ 인코딩, 을하지만를 가장 하는 의 양식 을 안전하게 줄일 수있는 관리 용 redexes. 관리 감소는 CPS 조건 을 수작업으로 쓸 수있는 것에 해당합니다. 따라서 CPS 변환 시간에 가능한 한 많은 행렬을 제거하는 도전이되었습니다.

아직도 어떤 발언이나 제안은 물론 환영합니다.

+0

종이에 대한 링크가 끊어졌습니다. –

+0

@Darius :이 논문은 "CPS Transform of Beta Redexes"입니다 (지금 읽고 있습니다). 링크는 다음과 같습니다. http://www.brics.dk/RS/04/39/BRICS-RS-04-39.pdf –