Обратите внимание, что если вы делаете это для курса, эта стратегия может не быть принята для представления.
То, что я сделал для некоторых из моих собственных проектов, представляет собой шаблон, подобный следующему:
Сделайте так, чтобы один файл был написан на простом 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> ....) ....)
* 1015И, наконец, в вашем «основном» 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> ....)
...