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