2012-04-30 9 views
4

아마도 내 질문에는 정말 간단한 답변이 있지만 찾을 수 없습니다.아무 것도하지 않는 연속 코드를 작성하십시오

스키마 R6RS에서 아무 것도하지 않고 모든 인수가 필요한 연속을 어떻게 만들 수 있습니까? .

((lambda() 
    (display 1) 
    (display 2) 
    (QUIT) 
    (displey "A"))) 
은 1 preints

2가 아니라 "A"+

을 수행 할 수 있습니다

내 목표는 나는 다음과 같은 코드가있는 경우 QUIT 있도록의 그것을 이름을 보자, 계속을하는 것입니다 도와주세요?

감사합니다.

(call/cc (lambda (return) 
    (display 1) 
    ... 
    (return) 
    (display "A"))) 

전혀 그 도움을합니까 :

답변

5

가장 간단한 방법은 간단한 "반환"스타일의 지속을 사용하는 것입니다?

+0

네, 감사합니다. 나는 재사용 할 수있는 반환 함수의 정의에 관심이있었습니다. 그래서 대답에서 영감을 얻으십시오 :'(quit #f)'를 정의한 다음'(call/cc (lambda (k) (set! quit k)))'. – Aslan986

+0

@Justin 그 호출/cc가 문맥을 뒷받침 해 주며, lambda 내에서 (return) 호출하면/cc를 호출 한 다음에 명령으로 계속 이동합니다. 그렇습니까? – dader

+1

@dader - 예, 이것은 연속의 가장 단순하고 직접적인 용도 중 하나입니다. 사실 그것은 제어를 둘러싼 범위로 복원하기 때문에 "탈출 연속"이라고 할 수 있습니다. –