【发布时间】:2016-11-03 00:07:00
【问题描述】:
假设我有一个名为 my-mod.rkt 的文件。
#lang racket ;; my-mod.rkt
(displayln "Module ran")
我显然可以通过在 repl 或其他脚本中实例化模块来运行此文件:
(require "my-mod.rkt")
打印出Module ran。
但是,如果我不能以这种方式运行该模块两次。例如,如果我需要my-mod.rkt 两次:
(require "my-mod.rkt")
(require "my-mod.rkt")
模块只被实例化一次。这通常是你想要的,但在这种情况下,实例化模块有一个副作用,我想保留。
显然我可以使用find-exe 在另一个子进程中运行它:
(require compiler/find-exe)
(system* (find-exe) "my-mod.rkt")
然后我在另一个操作系统级别的进程中运行这个程序,这不是我想要做的。
那么,我可以在同一个 Racket 程序中两次实例化一个模块吗?
【问题讨论】: