racket - BSL(如何设计程序): how to import code from a separate file into definitions area?

标签 racket racket-student-languages

我遇到了 BSL 问题。我想将我的代码分成单独的辅助文件并使用

(require "auxiliary-function.rkt") 

开头将分离的代码导入到定义区域。然而它并没有像想象的那样工作。虽然没有给出明确的错误,但似乎 DrRacket 根本看不到单独文件中的代码,而我看到的只是错误

<auxiliary-function-name>: this function is not defined 

显然,

(provide x)

不包含在 BSL 中。我读过manualthis答案,但仍不清楚如何进行这项工作。这在 BSL 中可能吗?

谢谢!

最佳答案

请注意,如果您在一门类(class)中执行此操作,则该策略可能不会被接受提交。

我为自己的一些项目所做的就是这样的模式:

有一个用普通 Racket 编写的文件,名为“provide.rkt”,如下所示:

; provide.rkt
#lang racket
(provide provide all-defined-out)

然后您可以使用它来提供特定函数或提供文件中的所有定义。

用于提供特定功能

在您的“库”BSL 文件中,您可以像这样要求提供,并使用它来提供您想要的特定功能:

; <auxiliary-library>.rkt
; written in BSL
(require "provide.rkt")

(provide <auxiliary-function-name>)

(define (<auxiliary-function-name> ....) ....)

最后,在“主”BSL 文件中,您可以像这样需要库:

; written in BSL
(require "<auxiliary-library>.rkt")

(<auxiliary-function-name> ....)

用于提供文件中的所有定义

在您的“库”BSL 文件中,您可以将 require 提供到其中并使用它来提供所有内容:

; <auxiliary-library>.rkt
; written in BSL
(require "provide.rkt")

(provide (all-defined-out))

(define (<auxiliary-function-name-1> ....) ....)

(define (<auxiliary-function-name-2> ....) ....)

...

然后在您的“主”BSL 文件中,您可以请求该库并获取所有定义:

; written in BSL
(require "<auxiliary-library>.rkt")

(<auxiliary-function-name-1> ....)

(<auxiliary-function-name-2> ....)

...

关于racket - BSL(如何设计程序): how to import code from a separate file into definitions area?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52653570/

相关文章:

racket - scribble/acmart 中的页码

使用格式的方案完整填充示例

path - Racket:如何检索运行文件的路径?

scheme - 替换(可能嵌套的)列表中第一次出现的符号

racket - 如何告诉 `make-module-evaluator` 使用像#lang 那样的自定义阅读器?

scheme - 如何在 Breakout 中让球与砖 block 碰撞( Racket )

scheme 如何返回一个表单符号 + *

racket - 放置图像未在 Dr-Racket 中定义