我正在阅读计算机程序的结构和解释 MIT视频讲座系列,我有一个关于从函数中返回副作用的快速问题。
在video 3A中,教授为for-each
写了一个类似于此的快速等式:
(define (for-each p l)
(if (null? l)
"done"
(p (car l)
(for-each p (cdr l)))))
是否存在从Scheme中的函数返回副作用的特定约定,或者"done"
是否是任意选择?
答案 0 :(得分:2)
这不是副作用,而是每个Scheme函数都必须返回一些东西。字符串"done"
是一种东西。通常,当您致电for-each
时,您可能会执行以下操作:
(for-each (lambda (x) (display x)) lst)
并忽略for-each
的返回值。作者可以轻松地从基本案例中选择任何其他值。