在Scheme中,过程定义的一般形式为:
(定义(名称> 参数>) body >)
其中 body >接受一个表达式序列,从而允许这种过程定义:
> (define (f) 1 2 3)
> (f)
3
同样,条件表达式的一般形式为:
(cond(谓词> 必然>)(谓词> 必然>)… (谓词> 必然>))
其中每个子句中的随后>接受一系列表达式,从而允许这种条件表达式:
> (cond (#t 1 2 3))
3
但是为什么我不能在条件表达式的结果子句中使用define
呢?
比较:
> (define (f) (define x 1) (define y 1) (define z 1) (+ x y z))
> (f)
3
具有:
> (cond (#t (define x 1) (define y 1) (define z 1) (+ x y z)))
ERROR on line 1: unexpected define: (define x 1)
注意。 —我正在MacOS 10.15.2上使用Chibi-Scheme 0.8.0实现。