Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在浏览麻省理工学院计算机程序的结构和解释视频讲座系列,我有一个关于从函数返回副作用的快速问题。
在视频 3A中,教授写了一个for-each与此类似的快速方程式:
for-each
(define (for-each p l) (if (null? l) "done" (p (car l) (for-each p (cdr l)))))
是否有从 Scheme 中的函数返回副作用的特定约定,或者是"done"任意选择?
"done"
这并不是真正的副作用,而是每个 Scheme 函数都必须返回一些东西。字符串"done"是东西。通常,当您打电话时,for-each您可能会执行以下操作:
(for-each (lambda (x) (display x)) lst)
并忽略 的返回值for-each。作者可以很容易地选择从基本情况返回的任何其他值。