Scheme语言自定义语法结构时的Literal identifier(2) clause1 clause2 ...) (if test (begin result1 result2 ...) (cond clause1 clause2 ...)))))
在上面这样的cond定义基础上,下面的代码
(let ((=> #f)) (cond (#t => 'ok))) ; =) ok
将被解释为(这里的=>被视为变量而不是语法元素)
(let ((=> #f)) (if #t (begin => 'ok)))
而不是
(let ((=> #f)) (let ((temp #t)) (if temp ('ok temp))))
因为局部的=>已经被改变了含义,不能匹配到包含=>的语法规则了。