Racket 链接文件包含项

Racket 链接文件包含项,racket,Racket,我有一个文件,configuration.rkt: (定义文件路径“path/to/file.rkt”) 然后我有了“main”文件program.rkt,我想在其中包括文件路径指定的文件。我试过这种方法,但不起作用: (include "configuration.rkt") (include file-path) 我能做什么?使用require而不是include 使用require而不是include 正如@soegaard所说,您希望通过require使用Racket的模块系统,而不是

我有一个文件,
configuration.rkt
: (定义文件路径“path/to/file.rkt”)

然后我有了“main”文件
program.rkt
,我想在其中包括
文件路径指定的文件。我试过这种方法,但不起作用:

(include "configuration.rkt")
(include file-path)

我能做什么?

使用
require
而不是
include


使用
require
而不是
include


正如@soegaard所说,您希望通过
require
使用Racket的模块系统,而不是通过文本包含源文件。这会让你省去很多悲伤

我注意到您似乎希望在运行时确定源文件的选择

如果是,有两种选择:

  • 你可以用

  • 你可以用。例如:

  • config.rkt:

    #lang racket
    
    (provide to-be-required)
    
    (define to-be-required "foo.rkt")
    
    foo.rkt:

    #lang racket
    
    (provide foo-value
             foo-proc)
    
    (define foo-value "I am from foo.rkt and I was dynamic-required!")
    
    (define (foo-proc)
      "I am foo-proc.")
    
    main.rkt

    #lang racket
    
    (require "config.rkt")
    
    (printf "Let's dynamic-require ~a, as config.rkt said.\n" to-be-required)
    
    (define foo-value (dynamic-require to-be-required 'foo-value))
    (define foo-proc  (dynamic-require to-be-required 'foo-proc))
    
    foo-value
    (foo-proc)
    
    输出:

    Let's dynamic-require foo.rkt, as config.rkt said.
    "I am from foo.rkt and I was dynamic-required!"
    "I am foo-proc."
    

    正如@soegaard所说,您希望通过
    require
    使用Racket的模块系统,而不是以文本形式包含源文件。这会让你省去很多悲伤

    我注意到您似乎希望在运行时确定源文件的选择

    如果是,有两种选择:

  • 你可以用

  • 你可以用。例如:

  • config.rkt:

    #lang racket
    
    (provide to-be-required)
    
    (define to-be-required "foo.rkt")
    
    foo.rkt:

    #lang racket
    
    (provide foo-value
             foo-proc)
    
    (define foo-value "I am from foo.rkt and I was dynamic-required!")
    
    (define (foo-proc)
      "I am foo-proc.")
    
    main.rkt

    #lang racket
    
    (require "config.rkt")
    
    (printf "Let's dynamic-require ~a, as config.rkt said.\n" to-be-required)
    
    (define foo-value (dynamic-require to-be-required 'foo-value))
    (define foo-proc  (dynamic-require to-be-required 'foo-proc))
    
    foo-value
    (foo-proc)
    
    输出:

    Let's dynamic-require foo.rkt, as config.rkt said.
    "I am from foo.rkt and I was dynamic-required!"
    "I am foo-proc."