multiple-value-list — 다중 반환값을 리스트로

multiple-value-list — 다중 반환값을 리스트로

Common Lisp 함수는 값을 여러 개 돌려줄 수 있어요. 필연적으로 다중 반환값을 다뤄야 하는데, 이 값들을 한꺼번에 "리스트"로 받고 싶다면 어떻게 해야 할까요? multiple-value-list는 폼이 돌려주는 여러 값을 리스트로 묶어주는 매크로예요.

출처: CLHS 공식 문서 - MULTIPLE-VALUE-LIST

본문

multiple-value-listform을 평가하고, 그 폼이 돌려주는 다중 값들을 리스트로 만드는 매크로예요.

multiple-value-list form
=> list

예를 들어 floor는 몫과 나머지를 두 값으로 돌려줘요. 그것을 리스트로 받으면 이렇게 돼요.

(multiple-value-list (floor -3 4))
=>  (-1 1)

multiple-value-listvalues-list는 서로 역연산이에요. values-list가 리스트를 받아 각 원소를 값으로 펼친다면, multiple-value-list는 값을 모아 리스트로 만드는 셈이죠. 또 multiple-value-listmultiple-value-call로 이렇게 표현할 수도 있어요.

(multiple-value-list form)
==  (multiple-value-call #'list form)

함께 보기

values-list, multiple-value-call