Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;; How modules work in Racket
- (require fruits) => "fruits/main.rkt"
- (require fruits/banana) => "fruits/banana.rkt"
- #lang fruits => "fruits/lang/reader.rkt" OR (submod "fruits/main.rkt" reader)
- #lang fruits/apple => "fruits/apple/lang/reader.rkt" OR (submod "fruits/apple.rkt" reader)
- fruits
- |
- +- main.rkt (require fruits)
- |
- +- apple.rkt (require fruits/apple)
- |
- +- banana.rkt (require fruits/banana)
- |
- +- pineapple
- |
- +- main.rkt (require fruits/pineapple/main)
- ================================================================================
- ;;; Publicly provide a private lang with a default reader:
- ;; collection/private/lingua.rkt
- #lang racket/base
- (provide #%module-begin)
- ;; collection/lingua.rkt
- #lang racket/base
- (module reader syntax/module-reader collection/private/lingua)
- ================================================================================
- ;;; Publicly provide a private lang with its own reader:
- ;; collection/private/lingua/reader.rkt
- #lang racket/base
- (provide read read-syntax)
- (define (read-syntax src in)
- #'(module whatever collection/private/lingua/expander
- parse-tree-from-in))
- ;; collection/private/lingua/expander.rkt
- #lang racket/base
- (provide #%module-begin)
- ;; collection/lingua.rkt
- #lang racket/base
- (module reader racket/base
- (provide (all-from-out collection/private/lingua/reader))
- (require collection/private/lingua/reader))
- ;; OR
- (module reader reprovide collection/private/lingua/reader)
Add Comment
Please, Sign In to add comment