小编myy*_*966的帖子

为什么定义语法或在方案中需要考虑三个条件?

我正在阅读方案编程语言,在第3章中,本书使用define-syntax来定义or和过程,它说下面的定义或者是不正确的:

(define-syntax or ; incorrect!
  (syntax-rules ()
    [(_) #f]
    [(_ e1 e2 ...)
     (let ([t e1])
       (if t t (or e2 ...)))]))
Run Code Online (Sandbox Code Playgroud)

而正确的定义是:

(define-syntax or
  (syntax-rules ()
    [(_) #f]
    [(_ e) e]
    [(_ e1 e2 e3 ...)
     (let ([t e1])
       (if t t (or e2 e3 ...)))]))
Run Code Online (Sandbox Code Playgroud)

为什么正确的定义需要三个条件?我运行了很多测试,这两个定义产生了相同的结果.怎么能告诉我为什么第一个定义是错的?

lisp scheme functional-programming racket

8
推荐指数
1
解决办法
138
查看次数

标签 统计

functional-programming ×1

lisp ×1

racket ×1

scheme ×1