gpt4 book ai didi

lisp - 语法绑定(bind)值必须是关键字 : alpha. 什么意思?

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

这是我的小程序:

(let-syntax ((alpha (lambda (x)
(list (syntax quote)
(list)))))
(alpha))

然后 guile 执行它,并返回 ()。但是 mit-scheme 输出如下:

;Syntactic binding value must be a keyword: alpha
;To continue, call RESTART with an option number:
; (RESTART 1) => Return to read-eval-print level 1.

为什么?

(我的版本是:Release 9.1 || Microcode 15.3 || Runtime 15.7 || SF 4.41 || LIAR/i386 4.118 || Edwin 3.116)

最佳答案

MIT Scheme 仅提供syntax-rules、语法闭包和用于定义语法转换器的显式重命名。对于后两者,您需要 sc-macro-transformerer-macro-transformer 形式。如果你想使用语法对象,你需要使用支持语法对象的实现(通常带有 syntax-case),例如 RacketGuile .

顺便说一句,即使在具有语法对象的语言中,您的宏定义也可能无法工作,因为您从转换器而不是语法返回列表。此外,您链接到的网页是一个相当古老的标准。您可能想阅读有关宏的最新资源,例如 TSPL4 .

关于lisp - 语法绑定(bind)值必须是关键字 : alpha. 什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13110941/

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