Tom*_*ver 5 macros scheme guile define-syntax
我正在为SICP工作,并希望尝试一些诡计的例子.我正在尝试流示例,并想要一个cons-stream的实现,我从这个StackOverflow问题得到了.然而当我把它打成诡计时,我得到:
guile> (define-syntax cons-stream
(syntax-rules ()
[(cons-stream x y) (cons x (delay y))]))
ERROR: invalid syntax ()
ABORT: (misc-error)
Run Code Online (Sandbox Code Playgroud)
我不知道这有什么问题 - 我尝试用'()替换(),删除[],但它仍然不起作用,即使它似乎是有效的R5RS.我目前正在使用guile 1.8.7,我看不到GNU文档提到的v2.0.1的包,这可能就是为什么它不能为我工作?
看起来您需要首先导入支持syntax-rules(请参阅http://www.gnu.org/software/guile/docs/docs-1.8/guile-ref/Syntax-Rules.html):
(use-syntax (ice-9 syncase))
Run Code Online (Sandbox Code Playgroud)
然后你需要将方括号改为parens; 之后它应该工作.
绝对不要引用文字列表; 这是一系列标识符,如形式lambda,而不是表达式.