我正在观看 MIT 视频讲座系列计算机程序的结构和解释,我有一个关于从函数返回副作用的快速问题。
在video 3A ,教授为 for-each
写了一个类似于此的快速方程式:
(define (for-each p l)
(if (null? l)
"done"
(p (car l)
(for-each p (cdr l)))))
对于从 Scheme 中的函数返回副作用是否有特定的约定,或者 “done”
是一个任意选择?
最佳答案
这并不是真正的副作用,而是每个 Scheme 函数都必须返回一些东西。字符串 "done"
是某种东西。通常,当您调用 for-each
时,您可能会这样做:
(for-each (lambda (x) (display x)) lst)
并忽略 for-each
的返回值。作者可以很容易地选择任何其他值从基本情况返回。
关于lisp - 在 Scheme 中返回副作用的惯例是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12656762/