scheme - Racket - 需要整个目录的文件

标签 scheme lisp racket require

目前我必须在每个文件的顶部执行此操作:

(require "dynamore/dynamore.rkt")
(require "dynamore/db.rkt")
(require "dynamore/types.rkt")

我希望能够做这样的事情:

(require dynamore)

最好不必开发我自己的收藏。

最佳答案

如果您不想创建包(这意味着您需要相对地require):

  1. 如果 dynamore 只包含这三个文件,您可以使用 reprovide-langglob-in如下:(require (glob-in "dynamore/*.rkt")).
  2. 您还可以在使用 the main functionalitydynamore 中创建 main.rkt reprovide-lang 专门重新提供这三个文件:

    #lang reprovide
    "dynamore.rkt"
    "db.rkt"
    "types.rkt"
    

    要使用它,只需(require "dynamore/main.rkt")

    • 不使用 reprovide-lang 的 native 解决方案是使用 all-from-out手动:

      #lang racket/base
      (require "dynamore.rkt"
               "db.rkt"
               "types.rkt")
      (provide (all-from-out "dynamore.rkt"
                             "db.rkt"
                             "types.rkt"))
      

如果你更喜欢创建一个包,那么按照上面的解决方案2(创建main.rkt等),在dynamore中创建info.rkt 目录如下:

#lang info
(define collection "dynamore")

然后运行 ​​raco pkg install。从现在开始,您将能够从任何地方(require dynamore)

注意:要安装reprovide-lang,请运行raco pkg install reprovide-lang

关于scheme - Racket - 需要整个目录的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57439852/

相关文章:

emacs - 为什么在 emacs-lisp 中的函数参数前使用#'?

emacs - Emacs 中的 HTTP 请求

scheme - 如何在 Racket 列表中添加

scheme - 什么决定了 Scheme 延续的外部边界?

方案的 "expected a procedure that can be applied to arguments"

scheme - 如何在 plt 方案中的文件中打印换行符?

scheme - 重复过滤后的列表顺序

c# - 如何在 C# (Visual Studio) 中获取 IronScheme 函数返回值

lisp - 从 SLIME 运行时无法找到包,但从命令行可以

racket - 如何独立测试 Racket 包?