导入代码时出现错误"模块:文档中已需要标识符"



在我的 Racket 程序中,当我尝试从我编写的文件中要求代码时,我收到错误消息:"模块:文档中已经需要标识符"。但是当我将代码复制并粘贴到要求模块中时,它工作正常。想法?

我尝试使用(提供(全部定义输出((以及在提供表单中列出所有函数名称。顺便说一下,我正在用涂鸦文件而不是直接的Racket文件来编码。

@(require racket/date
          racket/file
          racket/string
          racket/list
          racket/function
          racket/format
          db
          "directories.scrbl"
          "model-files.scrbl"
          )
请注意,从目录.scrbl

文件的所有导入都可以正常工作,但是当我需要model-files.scrbl时,就会出现问题。

更新:这绝对是涂鸦的问题。我将所有代码从Scribble更改为Racket代码,问题消失了。

#lang scribble/base#lang scribble/manual#lang scribble/doc自动提供doc。因此,当您无条件地require两个 Scribble 文档时,doc就会发生冲突。

有两种方法可以解决此问题。

  1. 使用only-inexcept-in来控制应require的内容。例如,您可以编写:

    (require (except-in "directories.scrbl" doc)
             (except-in "model-files.scrbl" doc))
    

    这将需要directories.scrblmodel-files.scrbl的所有内容,除了两者的doc

  2. 但据我所知,直接require Scribble 文件是非常罕见的(也是不合时宜的(。更好的方法是通过创建一个名为 utils.rkt 的 Racket 文件来重组,并将您想要使用的东西放在 utils.rkt 中的多个 Scribble 文件中,然后改为(require "utils.rkt")

最新更新