【发布时间】:2021-01-27 23:31:32
【问题描述】:
使用 mit-scheme 解释器 (v10.1.5-1), 我期待这个循环删除除 '2' 之外的 'ls' 的每个元素:
3 error> (define ls '(1 2 0 5))
;Value: ls
3 error> (for-each (lambda (n) (delq! n ls)) '(0 1 5))
;Unspecified return value
3 error> ls
;Value: (1 2)
为什么“1”没有被删除? 使用删除的结果是一样的!或更改 '(0 1 5) 的顺序。
【问题讨论】:
-
@ÓscarLópez 被迭代的列表与正在修改的列表不同。
标签: functional-programming scheme side-effects