rwo*_*wos 5 scheme racket read-eval-print-loop
我目前正尝试深入研究Racket / Scheme。我的编辑器旁边有一个(X)REPL实例,它可以极大地帮助我探索语言。但是,我似乎找不到能够向我展示函数源代码的XREPL命令或宏(或其他内容)。
所有需要的部分似乎都在这里:
XREPL的describe命令知道该文件:
-> ,describe string-join
; `string-join' is a bound identifier,
; defined in racket/string.rkt
; required directly
Run Code Online (Sandbox Code Playgroud)
并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>)
Run Code Online (Sandbox Code Playgroud)
而在事物的反射方面,我们有:
-> (procedure-arity string-join)
2
Run Code Online (Sandbox Code Playgroud)
但是,如果您只想知道如何调用该函数,那么这一切都将毫无用处。有没有办法访问函数的实现,或者至少是参数名称?
或者,哪种方式对我也有用-某种与help打开的文档等效的in-REPL纯文本格式?
我不确定这是否适用于 Racket,但在 MIT 计划中,有一些内置程序可以让您接近。(以下,proc仅代表任何程序)
(procedure-arity proc) 正如你提到的会给你参数的数量(pa proc) 将打印参数列表(pp proc) 将打印程序的主体这将适用于许多内置过程以及您自己定义的任何过程,但是如果您尝试以特殊形式调用其中任何一个,例如define或 ,set!您将收到错误。