컨텍스트로부터 유닛 생성하기
컨텍스트로부터 유닛 생성하기 (Generating A Unit from Context)
유닛은 모듈과 비슷하지만, 자기가 사용하는 바인딩을 명시적으로 선언하는 대신 주변 환경의 바인딩을 활용할 수 있어요. 이 문서에서는 unit-from-context와 define-unit-from-context를 통해 현재 컨텍스트의 바인딩으로 유닛을 만들어내는 방법을 설명할게요.
출처: Racket Reference
본문
syntax
(unit-from-context tagged-sig-spec)
tagged-sig-spec이 가리키는 인터페이스를, 주변 환경(둘러싼 environment)의 바인딩을 이용해 구현하는 유닛을 생성합니다. 생성된 유닛은 기본적으로 다음 코드와 동일해요:
(unit
(import)
(export tagged-sig-spec)
(define id expr) ...)
여기서 각 id는 익스포트를 만족시키기 위해 정의되어야 하는 식별자이고, 각각의 대응하는 expr은 unit-from-context 표현식이 위치한 환경에서의 id 값을 만들어 냅니다. (다만 실제로는 위처럼 작성할 수 없는데, 그 이유는 유닛 안의 각 id 정의가 unit 폼 바깥의 바인딩을 가리기(shadow) 때문이에요.)
tagged-sig-spec의 문법에 대해서는 unit을 참고하세요.
syntax
(define-unit-from-context id tagged-sig-spec)
주변 환경으로부터 유닛을 만든다는 점에서는 unit-from-context와 같고, id를 나중에 추론(inference)에서 사용할 정적 정보에 바인딩한다는 점에서는 define-unit과 같습니다.
더 알아보기
- 유닛 (Units) —
unit,define-unit,unit-from-context의 문법 - 시그니처 (Signatures) —
tagged-sig-spec의 문법 - 컨텍스트로부터 유닛 생성하기 — The Racket Guide