Macros 什么';scheme中的define syntax宏有什么问题?

Macros 什么';scheme中的define syntax宏有什么问题?,macros,scheme,guile,define-syntax,Macros,Scheme,Guile,Define Syntax,我正在研究SICP,并想试用guile中的一些示例。我正在尝试流示例,并希望为cons-stream提供一个实现,这是我从中获得的。然而,当我将其输入guile时,我得到: guile> (define-syntax cons-stream (syntax-rules () [(cons-stream x y) (cons x (delay y))])) ERROR: invalid syntax () ABORT: (misc-error) 我不知道这有什么问题-我尝试过用“(

我正在研究SICP,并想试用guile中的一些示例。我正在尝试流示例,并希望为cons-stream提供一个实现,这是我从中获得的。然而,当我将其输入guile时,我得到:

guile> (define-syntax cons-stream
  (syntax-rules ()
  [(cons-stream x y) (cons x (delay y))]))
ERROR: invalid syntax ()
ABORT: (misc-error)

我不知道这有什么问题-我尝试过用“()”替换(),删除了[],但它仍然不起作用,即使它看起来是这样。我目前使用的是guile 1.8.7,我看不到上面提到的v2.0.1软件包,这可能是它不适合我的原因吗?

看起来您需要先导入对
语法规则的支持(请参阅):

然后您需要将方括号更改为parens;在那之后,它应该会起作用

绝对不要引用文字列表;这是一个标识符序列,比如
lambda
formals,而不是表达式

(use-syntax (ice-9 syncase))