Scheme 是否有查看函数的方法';Racket REPL中的源代码?
我现在正试着深入研究一下这个骗局。我的编辑器旁边有一个(X)REPL的实例,它极大地帮助我探索这种语言。但是,我似乎找不到可以显示函数源代码的XREPL命令或宏(或其他什么) 所有需要的部件似乎都在那里: XREPL的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 并
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