lisp - 在 Scheme 中返回副作用的惯例是什么?

标签 lisp scheme sicp

我正在观看 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/

相关文章:

lisp - 为什么 apply 对于 lisp 评估器如此重要?

scheme - MIT/GNU 线程方案引用在哪里?

pdf - 从 LISP 生成 PDF 文档

stream - SICP 无限流(第 3.5.2 章)

list - 为什么 `(a) read as a list while ` (a b) 不是?

recursion - 给定一个递归函数,如何将其更改为尾递归和流?

支持套车方案!并设置-CDR!在sicp中

scheme - 从函数返回函数的目的是什么?

list - 如何在 Racket 中创建一个可以按照添加元素的顺序进行迭代的列表?

set - 为什么我的集合 A 和集合 B 的 Union 过程返回集合 A 而没有别的?