Я написал приветственный PRNG с умножением при переноске в Racket. Я хочу использовать provide
для ограничения доступа только к определенным функциям в моей библиотеке и для наложения на них контрактов . Используя Racket Documentation (ссылка выше), я поместил следующий код в начало моего файла с этой целью:
(require data/queue)
(provide
(contract-out
(make-cmwc-gen (-> (listof integer?) integer? integer? integer? procedure?))
(make-default-cmwc-gen (-> integer? procedure?))
(make-cmwc-gen-raw (-> queue? integer? integer? integer? procedure?))
(init-cmwc-seed (-> integer? queue?))))
Но когда я запускаю файл в DrRacket, я получаю следующую ошибку:
. contract-out: not a provide sub-form in: (contract-out (make-cmwc-gen (-> (listof
integer?) integer? integer? integer? procedure?)) (make-default-cmwc-gen (-> integer?
procedure?)) (make-cmwc-gen-raw (-> queue? integer? integer? integer? procedure?))
(init-cmwc-seed (-> integer? queue?)))
Код не выдает ошибок и в противном случае работает при запуске в DrRacket без вставленного выше кода.
Как правильно ограничить доступ только к определенным функциям вне исходного файла, а также принудительно применять их контракты в Racket?