20 lines
573 B
Racket
20 lines
573 B
Racket
#lang racket/base
|
|
|
|
|
|
(provide lookup-language-namespace)
|
|
|
|
|
|
|
|
|
|
(define language-namespace-cache (make-hash))
|
|
;; lookup-language-namespace: module-path -> namespace
|
|
;; Returns a namespace associated with the lang.
|
|
(define (lookup-language-namespace lang)
|
|
(hash-ref language-namespace-cache lang
|
|
(lambda ()
|
|
(let ([ns (make-base-empty-namespace)])
|
|
(parameterize ([current-namespace ns])
|
|
(namespace-require lang))
|
|
(hash-set! language-namespace-cache lang ns)
|
|
ns))))
|
|
|