가변 페어와 가변 리스트

가변 페어와 가변 리스트 (Mutable Pairs and Lists)

cons로 만드는 보통 페어와 달리, *가변 페어(mutable pair)*는 set-mcar!set-mcdr!로 그 부분을 바꿀 수 있어요. 전통적인 Lisp/Scheme 페어처럼 동작하는 데이터 구조입니다.

출처: Racket Reference - Mutable Pairs and Lists

본문

mutable paircons로 만든 페어와 비슷하지만, 가변 페어의 부분을 바꾸는 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가 되도록 변경해요.

더 알아보기