3

在为函数编写 Scribble 文档时,我想链接到一个内置函数,该函数与记录在同一个 Scribble 文件中的不同函数同名。通常@racketlink可用于此目的(以及区分文档名称空间中的两个函数之类的东西),但是当链接需要位于表单prefix-in的参数部分中时,这似乎不起作用。@defproc例如:

@defproc[(my-proc [f procedure? b:compose])
         any/c]{

 A procedure similar to @racketlink[b:compose]{compose}.

}

注意上面的两种用法b:compose。后一个链接b:compose简单地呈现为compose(如预期的那样),但如果我在前一个实例中尝试相同的代码(在参数块中),它呈现为(racketlink b:compose "compose"). 如何“逃避”对defproc参数块中内容的字面处理?这是否与 Scribble 的“内容”和“前内容”概念以及“解码”过程有关?

4

1 回答 1

4

@racket[_],@defproc[_]等形式让您使用#,(读作unsyntax)来逃避代码排版上下文。所以你应该能够把你的例子写成

@defproc[(my-proc [f procedure? #, @racketlink[b:compose]{compose})
         any/c]{ .... }

注意 和 之间的空格#,@以防止读者将整个序列读取为unsyntax-splicing。由于读者@#,@读者缩写(如#,.

将预内容(或预流等)转换为内容(或流等)的解码步骤是不相关的。请参阅scribble/decode.

于 2020-06-03T15:59:13.797 回答