지역 정의: local

지역 정의: local

local은 모듈 본문이나 최상위에서 쓰는 방식 그대로 정의를 한데 묶어 몸체(form)에서 사용할 수 있게 해 주는 특수 형식이에요. letrec-syntaxes+values처럼 재귀적인 지역 정의가 가능하지만, 정의를 쓰는 문법이 훨씬 자연스럽습니다.

출처: Racket Reference - Local Definitions: local

본문

( require racket/local ) — 패키지: base

이 절에서 문서화한 바인딩은 racket/localracket 라이브러리가 제공하지만, racket/base는 제공하지 않아요.

문법

(local [definition ...] body ...+)

letrec-syntaxes+values와 비슷하지만, 바인딩을 최상위 또는 모듈 본문에서 쓰는 것과 같은 방식으로 표현한다는 점이 달라요. 즉 define, define-values, define-syntax, struct 등을 사용하죠. 정의(definition)는 definition 형식을 부분 확장(Partial Expansion)해서 비정의(non-definition)와 구분합니다. 최상위 또는 모듈 본문에서처럼, begin으로 감싼 형태는 definition들의 나열 속으로 접합(splice)돼요.

더 알아보기