1

我正在浏览麻省理工学院计算机程序的结构和解释视频讲座系列,我有一个关于从函数返回副作用的快速问题。

视频 3A中,教授写了一个for-each与此类似的快速方程式:

(define (for-each p l)
   (if (null? l)
      "done"
      (p (car l)
         (for-each p (cdr l)))))

是否有从 Scheme 中的函数返回副作用的特定约定,或者是"done"任意选择?

4

1 回答 1

2

这并不是真正的副作用,而是每个 Scheme 函数都必须返回一些东西。字符串"done"是东西。通常,当您打电话时,for-each您可能会执行以下操作:

(for-each (lambda (x) (display x)) lst)

并忽略 的返回值for-each。作者可以很容易地选择从基本情况返回的任何其他值。

于 2012-09-29T21:47:45.623 回答