这真令人困惑......
假设我们有2个列表
(define abc '((1 (1 2 3)) (2 (2 3)) (4 (1 3))))
(define keys '(1 2))
(define value 2)
我想编写一个删除所提供值的函数,从第一个列表的每一对中的第二个元素开始,该列表中第一个元素位于第二个列表中
eg. define deleteValue(abc keys value )
and result '((1 (1 3)) (2 (3)) (4 (1 3))))
我有这段代码可以做其他事情,但也许它很有用
(define (decrement-assoc-values alist keys)
(map (lambda (ass)
(if (member (car ass) keys)
(list (car ass) (- (cadr ass) 1))
ass))
alist))
(define abc '((1 3) (2 3) (4 3)))
(define lst '(1 2))
(decrement-assoc-values abc lst )
Result : '((1 2) (2 2) (4 3))
这将该对的第二个元素递减1,该元素在第二个列表中具有第一个元素
答案 0 :(得分:0)
这应该这样做。
(define (delete-value abc keys value)
(map (λ (pair)
(if(member (car pair) keys)
(list (car pair)
(filter (λ(x)
(not(equal? x value)))
(car (cdr pair))))
pair))
abc))