R6RS Scheme: 정의

R6RS Scheme: 정의

Scheme의 정의(definition) 개념을 설명해요. 최상위 바인딩을 만드는 방법과 바인딩의 어휘적 구조를 다뤄요.

출처: 문서

본문

let 표현식으로 바인딩되는 변수는 *로컬(local)*이에요. 그 바인딩들이 let의 본문에서만 보이기 때문이에요. Scheme는 또한 다음과 같이 식별자에 대한 최상위 바인딩을 만드는 것을 허용해요:

(define x 23)
(define y 42)
(+ x y)  ⇒ 65

(이들은 실제로 최상위 프로그램이나 라이브러리의 본문에서 "최상위"에 있어요; 아래 1.12절을 보세요.)

앞의 두 괄호 구조는 *정의(definition)*이에요. 최상위 바인딩을 만들어 x를 23에, y를 42에 바인딩해요. 정의는 표현식이 아니며, 표현식이 나타날 수 있는 모든 곳에 나타날 수 없어요. 또한 정의는 값을 갖지 않아요.

바인딩은 프로그램의 어휘적 구조를 따르는 것을 보여줘요: 같은 이름의 바인딩이 여럿 존재할 때, 변수는 자신과 가장 가까운 바인딩을 참조하는데, 프로그램에서의 자신의 등장 위치에서 시작해 안쪽에서 바깥쪽으로 진행하면서 참조하고, 그 과정에서 로컬 바인딩을 찾지 못하면 최상위 바인딩을 참조해요:

(define x 23)
(define y 42)
(let ((y 43))
  (+ x y))  ⇒ 66
(let ((y 43))
  (let ((y 44))
    (+ x y)))  ⇒ 67

더 알아보기 (Learn more)

출처: Definitions - R6RS