【发布时间】:2013-11-11 20:23:32
【问题描述】:
也许我的标题有点乱..
我有一个这种形式的清单 (定义一个'((1 3)(2 2)(3 3)(4 5)(5 1)))
我想减 1,每对的第二个元素在给定列表中具有第一个元素...
例如.. (更新A(1 3 4))
结果
( (1 2) (2 2) (3 2) (4 4) (5 1)
(define (updateA lst)
(for ((x lst))
(for ((y a))
(equal? x (car y)))
;;do something here
))
【问题讨论】:
-
传入的列表是否真的更新了对你有影响吗?例如,
(let ((l ...)) (updateA l))将返回具有所需结构的 new 列表,但(let ((l ...)) (updateA l) l)将返回原始列表(尚未修改)。通常,“更新”一词在这样使用时表明该参数将被修改。 decrement(和increment)这个词也表明正在修改某些内容。 -
@JoshuaTaylor 在 Scheme 世界中,更新并不一定意味着突变,除非还使用了“就地”一词。