在为一个函数编写 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的 "内容 "和 "前内容 "的概念以及 "解码 "的过程有什么关系吗?
这样的表单 @racket[_]
, @defproc[_]
等让你使用 #,
(其内容为: unsyntax
),以逃过一劫。排码 语境。所以你应该可以把你的例子写成
@defproc[(my-proc [f procedure? #, @racketlink[b:compose]{compose})
any/c]{ .... }
请注意 #,
和 @
为了防止读者将整个序列读作 "我的",需要将 "我的 "读作 "我的"。unsyntax-splicing
. 你也可以把这个组合写成 @#,
因 @
读者与读者互动的缩写,如 #,
.
将预内容(或预流等)转化为内容(或流等)的解码步骤是无关的。见 文件的 scribble/decode
.