Multiple Values
Multiple Values
여러 결과 값에 대한 일반적인 정보는 Multiple Return Values 문서를 참고하세요. call-with-values(이 절에서 설명해요) 외에도 let-values, let*-values, letrec-values, define-values 같은 폼(그 외에도 많아요)이 여러 값을 받는 연속(continuation)을 만들어요.
출처: Racket Reference
본문
(values v ...) → any
v : any/c
주어진 v들을 돌려줘요. 즉 values는 제공받은 인자들을 돌려줘요.
> (values 1 2 3)
1
2
3
> (values)
(call-with-values generator receiver) → any
generator : (-> any)
receiver : procedure?
generator를 호출하고, generator가 만들어낸 값들을 receiver에 인자로 전달해요. 따라서 call-with-values는 receiver가 받아들일 수 있는 개수의 값을 받는 연속을 만들어요. receiver 프로시저는 call-with-values 호출에 대해 꼬리 위치에서 호출돼요.
> (call-with-values (lambda () 1) (lambda (x y) (+ x y)))
arity mismatch;
the expected number of arguments does not match the given
number
expected: 2
given: 1