gpt4 book ai didi

module - 如何在 Racket 模块中查找所有功能的列表?

转载 作者:行者123 更新时间:2023-12-04 18:41:29 25 4
gpt4 key购买 nike

我知道我可以阅读文档,但是因为这需要将我的注意力从我的编辑器和 REPL 上转移开,所以我希望能够看到我正在使用的模块提供的功能列表。

Racket 中是否有类似于 Ruby 的 Foo.methods() 的东西? ?

最佳答案

函数 module->exports 提供来自模块 provide 的名称列表表达。

> (require racket/date)
> (module->exports 'racket/date) ;module name is passed not the module
'()
'((0
(julian/scalinger->string ())
(date->julian/scalinger ())
(find-seconds ())
(date-display-format ())
(date->string ())
(date*->seconds ())
(date->seconds ())
(current-date ())))

引用: racket discussion list

因为 module->exports返回两个值, define-values需要捕获函数列表和宏列表以供其他地方使用:
; my-module.rkt
#lang racket
(provide (all-defined-out))
(define-syntax while
#|
Macros do not allow documentation strings
While macro from StackOverflow.
http://stackoverflow.com/questions/10968212/while-loop-macro-in-drracket
|#
(syntax-rules ()
((_ pred? stmt ...)
(do () ((not pred?))
stmt ...))))

(define my-const 9)

(define (prn a)
"Prints the passed value on a new line"
(printf "\n~a" a))

(define (my-func a)
"Another documentation string"
(prn a))

引用于:
;some-other-file.rkt
#lang racket
(require "my-module.rkt")
(define-values (functions-and-constants macros)
(module->exports '"my-module.rkt"))

在 REPL 中:
> functions-and-constants
'((0 (my-const ()) (my-func ()) (prn ())))
> macros
'((0 (while ())))

关于module - 如何在 Racket 模块中查找所有功能的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25063462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com