dek*_*oss 3 racket racket-student-languages
我遇到了 BSL 问题。我想将我的代码分成单独的辅助文件并使用
\n\n(require "auxiliary-function.rkt") \nRun Code Online (Sandbox Code Playgroud)\n\n首先将分离的代码导入到定义区域。然而它并没有像想象的那样工作。虽然没有给出明确的错误,但似乎 DrRacket 根本看不到单独文件中的代码,而我看到的只是错误
\n\n<auxiliary-function-name>: this function is not defined \nRun Code Online (Sandbox Code Playgroud)\n\n显然,
\n\n(provide x)\nRun Code Online (Sandbox Code Playgroud)\n\n不包含在 BSL 中。我已经阅读了手册和这个答案,但 xe2x80x99s 仍然不清楚如何进行这项工作。这在 BSL 中可能吗?
\n\n谢谢!
\n请注意,如果您在一门课程中执行此操作,则该策略可能不会被接受提交。
我为自己的一些项目所做的就是这样的模式:
有一个用普通 Racket 编写的文件,名为"provide.rkt",如下所示:
; provide.rkt
#lang racket
(provide provide all-defined-out)
Run Code Online (Sandbox Code Playgroud)
然后您可以使用它来提供特定函数或提供文件中的所有定义。
在您的“库”BSL 文件中,您可以像这样要求提供,并使用它来提供您想要的特定功能:
; <auxiliary-library>.rkt
; written in BSL
(require "provide.rkt")
(provide <auxiliary-function-name>)
(define (<auxiliary-function-name> ....) ....)
Run Code Online (Sandbox Code Playgroud)
最后,在您的“主”BSL 文件中,您可以像这样需要该库:
; written in BSL
(require "<auxiliary-library>.rkt")
(<auxiliary-function-name> ....)
Run Code Online (Sandbox Code Playgroud)
在您的“库”BSL 文件中,您可以要求提供并使用它来提供所有内容:
; <auxiliary-library>.rkt
; written in BSL
(require "provide.rkt")
(provide (all-defined-out))
(define (<auxiliary-function-name-1> ....) ....)
(define (<auxiliary-function-name-2> ....) ....)
...
Run Code Online (Sandbox Code Playgroud)
然后在“主”BSL 文件中,您可以请求该库并获取所有定义:
; written in BSL
(require "<auxiliary-library>.rkt")
(<auxiliary-function-name-1> ....)
(<auxiliary-function-name-2> ....)
...
Run Code Online (Sandbox Code Playgroud)