如何解决在方案中编辑嵌套列表
我将简短简短。
要:编辑嵌套列表中的元素。此嵌套列表将具有无限数量的元素,但是列表中的列表将始终具有2个元素,例如(list (list 1 2) (list 3 4))
。我想使用递归将特定值'x'添加到每个嵌套列表的第一个元素。例如(change (list (list 1 2) (list 10 20) 3)
,其中3是'x'值=> (list (list 4 2) (list 13 23))
代码:
(define (change lst x)
(cond
[(empty? lst) empty]
[else (cons (+ (first (first lst)) x)
(cons (second (first lst)) (change (rest lst) x)))]))
输出:(change (list (list 12 2) (list 1 2)) 100)
之类的输入将产生(list 112 2 101 2)
。
问题:已添加x值,但它应产生(list (list 112 2) (list 101 2))
。 Itt没有嵌套。
解决方法
尝试一下:
(define +n
(lambda (n)
(lambda (l)
(fold-right
(lambda (x a)
(cons (+ (car x) n)
(cons (cadr x)
a)))
'()
l ))))
(define 100+ (+n 100))
(100+ (list (list 12 2) (list 1 2)))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。