단일 유닛 모듈
단일 유닛 모듈 (Single-Unit Modules)
racket/unit을 #lang 뒤의 언어 이름으로 사용하면, %#module-begin을 제외한 racket/unit과 racket/base의 모든 바인딩이 제공되며, 모듈 본문이 유닛 본문으로 취급됩니다. 이 페이지에서는 코드 단위(unit) 하나를 모듈로 감싸 표현하는 문법을 설명합니다.
출처: Racket Reference
본문
#lang 뒤의 언어 이름으로 racket/unit을 쓰면, racket/unit과 racket/base의 모든 바인딩이 제공됩니다(단 %#module-begin은 제외). 그리고 모듈 본문은 유닛 본문으로 취급됩니다. 이 본문은 다음 모듈 본문 문법을 만족해야 합니다.
module-body = require-decl ...
(import tagged-sig-expr ...)
(export tagged-sig-expr ...)
init-depends-decl
unit-body-expr-or-defn
...
require-decl = (require require-spec ...)
| (begin require-decl ...)
| derived-require-form
require-decl이 몇 번 나오든 그 다음의 모듈 내용은 racket/base에 접근 가능한 유닛 본문과 동일합니다.
결과로 만들어지는 유닛은 base@로 내보내집니다. 여기서 base는 바깥쪽 모듈의 이름에서 유래합니다(즉, 기호 이름이거나, 디렉터리와 파일 확장자를 뺀 경로입니다). 만약 모듈 이름이 -unit으로 끝나면, base는 -unit 앞의 모듈 이름에 해당합니다. 그렇지 않으면 모듈 이름 자체가 base가 됩니다.
더 알아보기
- Racket Guide의 유닛(Units)과 모듈(Modules) 관련 내용
racket/unit의 유닛 문법 (unit,signature,compound-unit등)