从库中提供结构构造函数

Providing struct constructor from library

我目前正在扩展 racklog,这是我通过 运行 raco pkg install 在 repo 目录中安装的一个库。

我正在尝试提供一个新函数,即结构构造函数。目前,我在 racklog.rkt 中定义结构如下。然后我从那个文件中提供它。

; racklog.rkt
(struct my-struct (value))
(provide my-struct)

库的主文件仅提供此文件中的所有内容:

; main.rkt
(require "racklog.rkt")
(provide (all-from-out "racklog.rkt"))

但是,当我尝试在需要此模块的文件中使用提供的构造函数(应命名为 my-struct)时,它说找不到该 ID。特别是,我正在尝试:

; test.rkt
(require racklog)
my-struct

即使是定义的变量、函数等非结构体也会发生这种情况。所有其他提供的形式似乎都可以正常工作。有什么方法可以解决这个问题,以便我可以使用提供的构造函数?谢谢!

这是一个不幸的陈旧编译文件问题。尝试 raco setup --pkgs racklog 再次编译 racklog 和 运行 您的程序。它现在应该可以工作了。或者,您可以手动删除 compiled 目录。