在emacs中,有一种简单的方法可以在当前文件中加载一个子模块吗?
例如,如果我有以下文件
#lang racket
(define (foo x)
x)
(module+ sub
(define (bar x y)
x))我在球拍模式下点击f5启动foo,然后foo是可用的,但是bar没有。
发布于 2015-08-25 14:51:48
您可以结合dynamic-enter!和quote-module-path来完成这一任务。
对于上面发布的代码,给出了一个repl交互:
> (require racket/enter syntax/location)
> (dynamic-enter! (quote-module-path sub))
> bar
#<procedure:bar>或者,您可以使用dynamic-require/expose (公开部分允许您需要未提供的内容),就像这里所做的那样。
发布于 2015-08-25 09:03:16
它在DrRacket中的工作方式也是一样的。您必须从子模块中provide条,并require子模块来使用它。尝试以下代码:
#lang racket
(define (foo x)
x)
(module+ sub
(define (bar x y)
x)
(provide bar))
;; (bar 1 2) -- undefined
(require (submod "." sub))
(bar 1 2) ;; -- works herehttps://stackoverflow.com/questions/32185585
复制相似问题