我目前正试图潜入球拍/计划一下。 我有(X)REPL运行的实例,我旁边的编辑器,它可以帮助我非常探索语言。 不过,我似乎无法找到一个XREPL命令或宏(或其他),它会告诉我函数的源代码。
所有需要的部分似乎有:
XREPL的describe
命令知道该文件:
-> ,describe string-join
; `string-join' is a bound identifier,
; defined in racket/string.rkt
; required directly
和get-collects-search-dirs
知道路径:
-> (require setup/dirs)
-> (get-collects-search-dirs)
'(#<path:/home/richard/.racket/5.2.1/collects>
#<path:/usr/local/lib/racket/collects>)
和对事物的反射面有:
-> (procedure-arity string-join)
2
但是这一切都停止短的是有用的,如果你想知道的是如何调用该函数。 是否有访问函数的实现方式,或者至少是参数的名字呢?
或者,这也为我工作-某种在-REPL明文相当于该文档的help
打开?
几个星期前的XREPL ,describe
命令得到增强,打印功能参数名称和合同; 源 。
这是“蓝盒子”,从球拍的文档 - 所谓的,因为他们曾经是球拍6 CSS重新设计之前的蓝色; 现在他们居然灰色:)。
您可以通过从HEAD球拍建设得到这个。 否则,它应该是在下一版本6.1以后。
请记住,这似乎仅限于在已安装的软件包涂鸦文档的功能。
伊莱Barzilay指出, GEISER项目包括代码提取该文件。
我确实有提取文本出来的HTML文档的源代码的实验位,尽管这代码可能已经bitrotted。
请参阅: https://github.com/dyoo/wescheme-docs/blob/master/test-extract-docstring.rkt
和它的相关性,其中住在: https://github.com/dyoo/wescheme-docs 。
该extract-docstring.rkt
库我写了作品在拍5.2.1,但我承认在做一些很恶心的,哈克的东西来提取文档的文本。
这可能是值得的告诉在乡亲球拍用户邮件列表是能够访问来自基于文本的文档xrepl
是一件重要的事; 也许它会得到推动移动。
我不知道这是否适用于球拍,但在MIT方案有几个内置的程序,将让你接近。 (下面, proc
只是代表任何程序)
-
(procedure-arity proc)
正如你所提到会给你的参数个数 -
(pa proc)
将打印参数列表 -
(pp proc)
将打印过程的主体
这将工作的许多内置的程序,以及任何你自己定义的,但如果你尝试调用任何这些特殊形式像define
或set!
你会得到一个错误。
文章来源: Is there a way to view a function's source code from within the Racket REPL?