5

我正在通过 SICP 工作,并想在 guile 中尝试一些示例。我正在尝试流示例并想要一个 cons-stream 的实现,这是我从这个 StackOverflow 问题中得到的。但是,当我将其输入 guile 时,我得到:

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

我不知道这有什么问题 - 我尝试将 () 替换为 '(),删除 [],但即使它似乎是有效的 R5RS ,它仍然无法正常工作。我目前使用的是 guile 1.8.7,我看不到GNU 文档提到的 v2.0.1 包,这可能是它不适合我的原因吗?

4

1 回答 1

8

看起来您需要首先导入支持syntax-rules(请参阅http://www.gnu.org/software/guile/docs/docs-1.8/guile-ref/Syntax-Rules.html):

(use-syntax (ice-9 syncase))

然后你需要把方括号改成parens;之后它应该工作。

绝对不要引用文字列表;那是一系列标识符,例如lambda形式,而不是表达式。

于 2011-05-21T13:37:43.693 回答