gpt4 book ai didi

list - 在方案中定义 map 以获取多个列表

转载 作者:行者123 更新时间:2023-12-02 08:39:50 24 4
gpt4 key购买 nike

我正在为 scheme in scheme 创建一个求值器,我希望它具有的功能之一是 map 。但是,我发现的所有 map 定义都不允许有多个列表。例如:

(define (my-map proc lis)
(cond ((null? lis)
'())
((pair? lis)
(cons (proc (car lis))
(my-map proc (cdr lis))))))

这个 map 的定义是“不完整的”,因为,例如,你不能像这样添加 2 个数字列表(它只允许一个列表作为参数):

(my-map + '(1 2 3) '(4 5 6))

如何修改上面的 map 定义以允许任意数量的列表?

最佳答案

您可以根据仅适用于一个列表的one-map过程定义适用于多个列表的multi-map过程(这就是您的my-map 程序是这样做的,虽然第二个条件有点不寻常)。

假设所有列表的长度都相同,并且至少一个列表作为参数传递给multi-map:

(define (one-map proc lst)
(if (null? lst)
'()
(cons (proc (car lst))
(one-map proc (cdr lst)))))

(define (multi-map proc . lst)
(if (null? (car lst))
'()
(cons (apply proc (one-map car lst))
(apply multi-map proc (one-map cdr lst)))))

例如:

(multi-map + '(1 2 3) '(4 5 6) '(7 8 9))
=> '(12 15 18)

关于list - 在方案中定义 map 以获取多个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17635639/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com