2010-06-27 6 views
2
방식으로 이상한 함수 여기

) f) 1)메커니즘

f가 명령 행에서 호출되면 표시되는 결과는 f입니다. 이 메커니즘에 대한 설명은 무엇입니까? ..

감사!

답변

3

방금 ​​'계속'을 우연히 발견했습니다. 이해하기 가장 어려운 스키마 일 수 있습니다.

call/cccall-with-current-continuation의 약어로, 단일 인수 함수를 자체 인수로 사용하여 현재 '연속'으로 호출합니다.

그래서 계속 되니? 그건 설명하기가 힘들며, 내 생각보다 더 나은 설명을 얻기 위해 아마 google해야한다. 그러나 연속이란 단순히 하나의 논증의 함수이며, 그 몸은 가치의 어떤 '연속'을 나타낸다. 우리는 특급은 임의의 표현 인 상태 (+ 2 (* 2 exp))이있을 때 우리는 그 표현을 평가하는 경우

등이 그 결과를 기다리는 '계속'는, 그것은 예를 들어 3로 평가되면 평가, 계속 장소, 그것은 것을 삽입있다 값을 표현식 (* 2 3)에 입력하고 다음 '계속'또는 평가가 계속되는 곳인 (+ 2 ...)으로 넘어갑니다.

프로그래밍 언어의 거의 모든 맥락에서 계산이 값과 함께 계속되는 곳은 시작과 동일한 장소입니다. 많은 언어로 된 return 문이 주요 반례문이지만 계속은 완전히 다른 곳입니다. return 문 자체.

Scheme에서 연속체를 직접 제어 할 수 있으므로 완료된 것처럼 '캡처'할 수 있습니다. f은 현재 연속을 평가하는 것 이상으로, 결국 현재 연속으로 (lambda (x) x)을 호출하면 평가됩니다. 따라서 전체 함수 본문이 평가합니다. 제가 말했듯이, 연속체는 기능 자체로 구성되어 있습니다. 시체는 캡처 할 연속체로 볼 수 있습니다. Scheme의 설계자는이 연속체를 단순히 람다 추상화라고합니다.

그래서 코드 f에서 처음으로 호출 된 연속성을 평가합니다. 다음 함수로이 연속은 'f (기호)에 적용됩니다. 즉, 해당 심볼이 심볼로 다시 평가되는 곳에서 연속으로 반환되어 바인딩 된 함수를 나타냅니다. 심볼은 인수로 심볼로 호출되어 최종적으로 표시됩니다. 당신은 영화 '프라이머'를 본 적이 있다면 마음을 불허의

종류는, 어쩌면이 그것을 설명 :

http://thisdomainisirrelevant.net/1047

+0

는 설명과 링크를 주셔서 대단히 감사합니다! – shaku