가변 페어와 가변 리스트
가변 페어와 가변 리스트 (Mutable Pairs and Lists)
cons로 만드는 보통 페어와 달리, *가변 페어(mutable pair)*는 set-mcar!와 set-mcdr!로 그 부분을 바꿀 수 있어요. 전통적인 Lisp/Scheme 페어처럼 동작하는 데이터 구조입니다.
본문
mutable pair는 cons로 만든 페어와 비슷하지만, 가변 페어의 부분을 바꾸는 set-mcar!와 set-mcdr! 변이 연산을 지원해요(전통적인 Lisp와 Scheme 페어처럼).
mutable list는 페어로 만든 리스트와 비슷하지만, 가변 페어로 만들어집니다.
가변 페어는 페어(pair)가 아니에요. 둘은 완전히 별개의 데이터타입이죠. 마찬가지로 가변 리스트는 리스트(list)가 아닙니다. 단 빈 리스트는 빈 가변 리스트이기도 해요. 가변 페어와 가변 리스트로 프로그래밍하기보다는, 페어·리스트·해시 테이블 같은 데이터 구조가 실질적으로 거의 항상 더 나은 선택입니다.
가변 리스트는 단일 값 시퀀스(Sequences 참조)로 쓸 수 있어요. 가변 리스트의 요소들이 시퀀스의 요소가 됩니다. in-mlist도 함께 보세요.
이 절은 다음 하위 절들로 구성됩니다:
가변 페어 생성자와 선택자 (Mutable Pair Constructors and Selectors)
프로시저
(mpair? v) → boolean?
v : any/c
v가 가변 페어이면 #t, 그렇지 않으면 #f를 반환해요.
프로시저
(mcons a d) → mpair?
a : any/c, d : any/c
새로 할당된 가변 페어를 반환하는데, 첫 번째 요소가 a이고 두 번째 요소가 d예요.
프로시저
(mcar p) → any/c
p : mpair?
가변 페어 p의 첫 번째 요소를 반환해요.
프로시저
(mcdr p) → any/c
p : mpair?
가변 페어 p의 두 번째 요소를 반환해요.
프로시저
(set-mcar! p v) → void?
p : mpair?, v : any/c
가변 페어 p의 첫 번째 요소가 v가 되도록 변경해요.
프로시저
(set-mcdr! p v) → void?
p : mpair?, v : any/c
가변 페어 p의 두 번째 요소가 v가 되도록 변경해요.