gpt4 book ai didi

scheme - 包括来自 Racket /方案中的文件

转载 作者:行者123 更新时间:2023-12-04 23:28:13 27 4
gpt4 key购买 nike

我正在尝试使用 drracket 来完成“如何做”中的练习
设计程序第 2 版”。

本文中的一些练习建立在前面的答案之上
问题,所以我想包括源文件
回答了问题,这样我就不必复制和粘贴正文
每次的旧答案。

我的主要问题是:我该怎么做?

我查看了文档并找到了一个名为include这似乎做我想要的,但我不知道如何使用
它正确。

例如 - 我有两个文件:

测试.rkt - 这编译和运行良好,并包含一个功能:

(define (test) 1)
(test)

新测试.rkt - 我希望这个文件能够使用 test.rkt 中定义的函数。
(require racket/include)
(include "test.rkt")

(define (newtest) (* test 2))

当我尝试编译它时,我收到以下错误:
module: this function is not defined

(信息量不是很大,但这就是我得到的所有信息......)

如何在不出现此错误的情况下包含第一个文件?是 include甚至是正确的功能,还是我的方法完全错误?

最佳答案

include表格不起作用,因为当语言设置为“初学者”或其他教学语言之一时,DrRacket 实际上将您的程序包装在一个模块中。打开"test.rkt"就可以看到在常规文本编辑器中。 #reader....位是生成模块的原因。但是当得到 included进入另一个文件,这没有意义。因此,提示 module 的错误.

不幸的是,据我所知,HtDP 语言仍然没有 provide ,这是您正确完成这项工作所需要的。

如果你真的想让这个工作,这里有一种破解它的方法:

创建一个名为 "provide.rkt" 的新文件在与您的其他文件相同的目录中。在您编辑此文件(并且仅此文件)时,将 DrRacket 中的语言设置为“从源代码确定语言”。将以下两行放入 "provide.rkt" :

#lang racket
(provide provide)

(它使用仅提供内置特殊形式 provide 的完整 Racket 语言声明了一个模块。)

将以下行添加到您的 "test.rkt"程序。 (确保将 DrRacket 的语言设置回“初学者”或您为此使用的任何教学语言。)
(require "provide.rkt")
(provide test)

现在 "test.rkt"是一个导出你的 test 的模块功能。 (它一直是一个模块,只是之前没有任何导出,所以它不是很有用。)

将以下行添加到您的 "newtest.rkt"程序:
(require "test.rkt")

导入 "test.rkt" 提供的所有内容: 目前只有 test ,但您可以添加其他内容,您只需要 provide他们。

关于scheme - 包括来自 Racket /方案中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8996394/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com