私はRacketで無料のキャリー付き乗算PRNGを作成しました。provide
ライブラリ内の特定の関数へのアクセスのみを制限し、それらにコントラクトを課すために使用したいと思います。ラケットのドキュメント(上記のリンク)を使用して、ファイルの先頭に次のコードを配置しました。
(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でそれらのコントラクトを適用する適切な方法は何ですか?