Scheme 是否有查看函数的方法';Racket REPL中的源代码?

Scheme 是否有查看函数的方法';Racket REPL中的源代码?,scheme,racket,read-eval-print-loop,Scheme,Racket,Read Eval Print Loop,我现在正试着深入研究一下这个骗局。我的编辑器旁边有一个(X)REPL的实例,它极大地帮助我探索这种语言。但是,我似乎找不到可以显示函数源代码的XREPL命令或宏(或其他什么) 所有需要的部件似乎都在那里: XREPL的descripe命令知道该文件: -> ,describe string-join ; `string-join' is a bound identifier, ; defined in racket/string.rkt ; required directly 并

我现在正试着深入研究一下这个骗局。我的编辑器旁边有一个(X)REPL的实例,它极大地帮助我探索这种语言。但是,我似乎找不到可以显示函数源代码的XREPL命令或宏(或其他什么)

所有需要的部件似乎都在那里:

XREPL的
descripe
命令知道该文件:

-> ,describe string-join
; `string-join' is a bound identifier,
;   defined in racket/string.rkt
;   required directly
并且
get收集搜索目录
知道路径:

-> (require setup/dirs)
-> (get-collects-search-dirs)
'(#<path:/home/richard/.racket/5.2.1/collects>
  #<path:/usr/local/lib/racket/collects>)
但是如果您只想知道如何调用函数,那么它就不再有用了。 是否有方法访问函数的实现,或者至少访问参数名


或者,这对我也适用-某种REPL纯文本形式,相当于
help
打开的文档?

Eli Barzilay指出,该项目包括提取此文档


我确实有一段实验性的源代码,可以从HTML文档中提取文本,尽管这些代码可能已经过时了

见:

及其依赖项,它们位于:

我编写的
extract docstring.rkt
库在Racket 5.2.1下工作,但是我承认我正在做一些非常讨厌的事情来从文档中提取文本


也许有必要告诉网上的人们,能够从
xrepl
访问基于文本的文档是一件重要的事情;也许它会推动运动。

我不确定这是否适用于球拍,但在麻省理工学院的计划中,有两个内置的程序可以让你接近。(下面,
proc
仅代表任何过程)

  • (procedure-arity-proc)
    如您所述,将为您提供参数数量
  • (pa proc)
    将打印参数列表
  • (pp-proc)
    将打印过程的正文

  • 这将适用于许多内置过程以及您自己定义的任何过程,但是如果您尝试在特殊表单上调用其中任何一个过程,如
    define
    set
    您将得到一个错误。

    几周前,XREPL
    ,descripe
    命令得到了增强,可以打印函数参数名称和契约

    这是Racket文档中的“蓝色方框”——之所以这样称呼是因为在Racket 6 CSS重新设计之前,它们是蓝色的;现在它们实际上是灰色的:)

    你们可以通过从头开始制作球拍来达到这个目的。否则,它应该在6.1之后的下一个版本中


    请记住,这似乎仅限于在安装的软件包中包含Scribble文档的函数。

    这在邮件列表中出现过多次,没有好的方法可以做到这一点,因为函数可能有相当复杂的参数列表(例如,对于2个参数和3个参数,它可能使用具有不同参数名称和用途的
    case lambda
    )。最认真的尝试可能是。谢谢,我会看一看!@EliBarzilay:我不使用emacs,但geiser的似乎是一个很好的起点。谢谢!@rwos:你也可以搜索邮件列表档案——我们在Jao做这件事的时候就这些问题与他进行了讨论。
    pa
    pp
    是正确的y我正在寻找的东西-遗憾的是,racket没有提供给他们接受这一个,因为
    ,description
    在6.1.1中,并且完全符合我的要求-谢谢更新!
    -> (procedure-arity string-join)
    2