gpt4 book ai didi

guile - 检查符号是否绑定(bind)

转载 作者:行者123 更新时间:2023-12-02 03:54:04 26 4
gpt4 key购买 nike

在 Emacs Lisp 中 (boundp 'symbol) 如果 symbol 绑定(bind)到某个值,则返回 tnil否则。 Guile Scheme 中是否有等效的程序?

最佳答案

方案避免将实现泄漏到规范中,并提及“标识符”,而不是将内部符号绑定(bind)到值 - 请参阅 R7RS 的 §2.1。在方案中,“标识符”只是一个名称。

标识符名称被视为标识变量,除非它标识宏(语法)或位于需要将其视为标识符号的上下文中,例如通过引号。特别是,R7RS 的 §2.1 指出“当标识符作为文字或文字出现时(请参阅第 4.1.2 节),它被用来表示符号(请参阅第 6.5 节)”。你可以用符号测试一个标识符是否能识别一个符号?程序。

Guile 方案实际上通过驻留符号来实现标识符,您可以使用 Defined? 查询符号是否绑定(bind):

(defined? 'num)

=>#f

(define num 1)(defined? 'num)

=>#t

这是一个狡猾的实现问题,而不是可移植的方案。

编辑:注意定义了吗?仅适用于使用 Define 定义的顶级变量。它不适用于 let 和同源词。

关于guile - 检查符号是否绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44542348/

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