values로 값 패킷을 반환하고 call-with-values로 인자 수가 맞는 소비자에 연결합니다.
한눈에 보기
LISPEX
(call-with-values (lambda () (values 3 4)) (lambda (a b) (+ (* a a) (* b b))))결과
OUTPUT
25작업 방법
- 생산자는 호출 피연산자, 테스트, 바인딩 초기식, 대입 RHS가 아니라 전용 생산자 컨텍스트에 둡니다.
- 소비자는 생성된 각 값을 인자 하나씩 받고 일반 인자 수 검사를 거칩니다.
- 폐기 가능한 제어 경로에서 0개 값은
(values)로 의도적으로 표현합니다.
경계
- 호출자가 값 개수를 기대한다면 의미적 다중 값을 일반 리스트로 인코딩하지 마세요.