Пытаясь написать простой тестовый сценарий, чтобы выяснить, как работает srcdo c, я в настоящее время не могу понять, какую форму следует использовать для контракта функции, который я должен передать proc-doc/names
, если в нем написан модуль typed / racket.
Итак, базовое c предложение
(module My-typed-module typed/racket
(require scribble/srcdoc)
(provide (proc-doc/names
some-fun (-> [a : Integer]
[b : Integer]
Exact-Rational) (a b)
("Some description")))
(: some-fun (-> ([a : Integer]
[b : Integer])
Exact-Rational))
(define (some-fun a b)
(/ (- a b) a))
)
, а также нетипизированная версия контракта, используемая в типизированном модуле
(module My-typed-module typed/racket
(require scribble/srcdoc)
(provide (proc-doc/names
some-fun (-> integer? integer? rational?) (a b)
("Some description")))
(: some-fun (-> ([a : Integer]
[b : Integer])
Exact-Rational))
(define (some-fun a b)
(/ (- a b) a))
)
, оба don не работает из-за proc-doc/names: unsupported procedure contract form (no argument names)
. Исходная строка, которая сообщает об ошибке, находится здесь , но это не сильно помогает (по крайней мере, мне).
Нетипизированная версия упомянутого кода работает нормально.
Что правильно использовать proc-doc/names
внутри типизированного модуля? В идеале я бы хотел еще раз опустить написание контракта, учитывая, что у меня уже есть контракт, описанный для функции.