我是 Scheme 的新手,我正在尝试通过阅读Structure and Interpretation of Computer Programs来熟悉这门语言。我对排序有点困惑。
首先,我知道begin
引入关键字是为了允许排序,因此需要更容易地对可变结构进行操作。我不明白的是,有时他们使用如下排序(受 SCIP 第 268 页上的示例启发):
(define (stuff-0)
(+ 1 2)
(+ 1 3)
'ok)
而同样可以使用begin
:
(define (stuff-1)
(begin
(+ 1 2)
(+ 1 3)
'ok))
这两者之间是否存在语义差异,或者第一个只是第二个的语法糖?
其次,除了实际重要性之外,我们在理论上是否需要begin
构造?我想对于我们需要的每个序列,我们可以编写实现该序列的级联程序。这当然是不切实际的,但我只是对没有begin
结构的语言的表现力感兴趣。