다중 값 만들고 소비하기

values로 값 패킷을 반환하고 call-with-values로 인자 수가 맞는 소비자에 연결합니다.

한눈에 보기

LISPEX
(call-with-values (lambda () (values 3 4)) (lambda (a b) (+ (* a a) (* b b))))

결과

OUTPUT
25

작업 방법

  • 생산자는 호출 피연산자, 테스트, 바인딩 초기식, 대입 RHS가 아니라 전용 생산자 컨텍스트에 둡니다.
  • 소비자는 생성된 각 값을 인자 하나씩 받고 일반 인자 수 검사를 거칩니다.
  • 폐기 가능한 제어 경로에서 0개 값은 (values)로 의도적으로 표현합니다.

경계

  • 호출자가 값 개수를 기대한다면 의미적 다중 값을 일반 리스트로 인코딩하지 마세요.