gpt4 book ai didi

scheme - 从 namespace 映射符号重新内化符号

转载 作者:太空宇宙 更新时间:2023-11-03 18:46:07 25 4
gpt4 key购买 nike

我不确定问题标题是否合适,但我想知道的是:

我想从 repl 中获取当前模块中定义的绑定(bind)列表。经过一些搜索,这似乎是一个很好的解决方案:

(define (racket-symbols-set)
(list->set (namespace-mapped-symbols (module->namespace 'racket))))
(define (namespace-symbols-set)
(list->set (namespace-mapped-symbols)))
(define (module-bindings)
(set->list (set-subtract
(namespace-symbols-set)
(racket-symbols-set))))

因此,调用 (module-bindings) 会返回一个符号列表。但是,如果我尝试从该结果中调用符号,例如执行 ((first (module-bindings))),我会收到“应用程序:不是过程”错误,尽管第一个符号是过程。

如何调用该交易品种对应的过程?

最佳答案

您可以使用 namespace-variable-value 查找命名空间变量的值.由于您的 namespace-symbols-set 仅使用当前命名空间,这也是 namespace-variable-value 的默认命名空间,因此使用它非常简单。

例如,要调用与您的 module-bindings 过程返回的列表中的第一项关联的过程:

((namespace-variable-value (car (module-bindings))))

或者,将您的首选命名空间指定为 namespace-variable-value 调用的第四个参数。

关于scheme - 从 namespace 映射符号重新内化符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35734471/

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