набрал / набрал и про c -док / имена - PullRequest
0 голосов
/ 04 мая 2020

Пытаясь написать простой тестовый сценарий, чтобы выяснить, как работает 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 внутри типизированного модуля? В идеале я бы хотел еще раз опустить написание контракта, учитывая, что у меня уже есть контракт, описанный для функции.

...