Racket 获取错误“;模块:文档中已需要标识符";导入代码时

Racket 获取错误“;模块:文档中已需要标识符";导入代码时,racket,require,Racket,Require,在我的Racket程序中,当我试图从我编写的文件中获取代码时,会收到错误消息:“module:identifier ready required In doc”。但是,当我将代码复制并粘贴到所需的模块中时,它工作得很好。想法 我尝试过使用(提供(全部定义出来))以及在提供表单中列出所有函数名。顺便说一句,我用涂鸦文件而不是直拍文件来编码 @(require racket/date racket/file racket/string ra

在我的Racket程序中,当我试图从我编写的文件中获取代码时,会收到错误消息:“module:identifier ready required In doc”。但是,当我将代码复制并粘贴到所需的模块中时,它工作得很好。想法

我尝试过使用(提供(全部定义出来))以及在提供表单中列出所有函数名。顺便说一句,我用涂鸦文件而不是直拍文件来编码

@(require racket/date
          racket/file
          racket/string
          racket/list
          racket/function
          racket/format
          db
          "directories.scrbl"
          "model-files.scrbl"
          )
请注意,所有导入都可以从directories.scrbl文件中正常工作,但当我需要model-files.scrbl时,就会出现问题

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

\lang Scribble/manual
,以及
\lang Scribble/doc
自动提供
doc
。因此,当您无条件地
需要
两个涂鸦文档时,
doc
会发生冲突

有两种方法可以解决这个问题

  • 使用或控制应
    要求的内容
    d。例如,您可以编写:

    (require (except-in "directories.scrbl" doc)
             (except-in "model-files.scrbl" doc))
    
    这将需要从
    目录.scrbl
    模型文件.scrbl
    中获取所有内容,除了从这两个目录中获取
    文档

  • 但据我所知,
    直接要求
    一个涂鸦文件是非常罕见的(而且很不自然)。更好的方法是通过创建一个名为
    utils.rkt
    的Racket文件来重构,并将要使用的东西放在
    utils.rkt
    中的几个Scribble文件中,然后改为
    (需要“utils.rkt”)


  • 非常感谢。这一点非常清楚,尽管我很惊讶,直接要求使用Scribble文件是不明智的。其思想是Scribble文件描述文档。一个文档可以通过导入另一个文档