我正在定义一个使用三个列表的函数(下面的“ my-function” )。 它检查这三个列表是否满足特定条件,然后执行其他操作。此条件的长度为2(我怀疑这并不重要,但我更愿意提及)。因此,其格式为:
(define my-function (lambda (list1 list2 list3)
(cond
[(and (= (length list1) 2) (= (length list2) 2) (= (length list3) 2))...
我的问题是:如何将“我的功能”推广到许多列表?
更笼统地说:有没有办法将列表索引到函数的输入中,然后一一调用它们以检查条件?
答案 0 :(得分:2)
您可以使用andmap
来检查条件是否满足列表中的 all 个元素:
(define lsts (list list1 list2 list3 list4))
(andmap (lambda (lst) (= (length lst) 2))
lsts)
诀窍是用您要检查的元素创建一个列表,在这种情况下,它们就是列表本身。为了进一步概括这一点,您可以将进行检查的lambda
作为参数传递,并且可以将子列表作为变量参数传递:
(define (my-function check . lsts)
(andmap check lsts))
(my-function (lambda (lst) (= (length lst) 2))
list1 list2 list3 list4)