请注意,如果您为课程执行此操作,则提交时可能不会接受此策略。
我为自己的一些项目所做的是这样的模式:
有一个用普通 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 文件中,您可以要求提供它并使用它来提供所有内容:
; <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> ....)
...