R6RS Scheme: 할당

R6RS Scheme: 할당

Scheme의 할당(assignment) 개념을 설명해요. 변수가 바인딩되는 위치(location)의 내용을 파괴적으로 수정하는 set!을 다뤄요.

출처: 문서

본문

정의나 let, lambda 표현식으로 바인딩되는 Scheme 변수는 실제로 각각의 바인딩에서 지정된 객체에 직접 바인딩되는 것이 아니라, 이 객체들을 담고 있는 위치(locations)에 바인딩돼요. 이 위치들의 내용은 이후 *할당(assignment)*을 통해 파괴적으로 수정될 수 있어요:

(let ((x 23))
  (set! x 42)
  x)  ⇒ 42

이 경우 let 표현식의 본문은 순차적으로 평가되는 두 표현식으로 구성되고, 마지막 표현식의 값이 전체 let 표현식의 값이 돼요. 표현식 (set! x 42)은 할당인데, "x가 참조하는 위치의 객체를 42로 바꿔라"는 뜻이에요. 따라서 x의 이전 값인 23이 42로 교체돼요.

더 알아보기 (Learn more)

출처: Assignment - R6RS