Scheme 作为函数输入的多个列表

Scheme 作为函数输入的多个列表,scheme,Scheme,我正在使用三个列表定义一个函数(“我的函数”)。 它检查这三个列表是否满足某个条件,然后做更多的事情。这个条件是长度为2(我想这并不重要,但我更愿意提及)。因此,它具有以下形式: (define my-function (lambda (list1 list2 list3) (cond [(and (= (length list

我正在使用三个列表定义一个函数(“我的函数”)。 它检查这三个列表是否满足某个条件,然后做更多的事情。这个条件是长度为2(我想这并不重要,但我更愿意提及)。因此,它具有以下形式:

(define my-function (lambda (list1 list2 list3)
    (cond                                                                            
     [(and (= (length list1) 2) (= (length list2) 2) (= (length list3) 2))...
我的问题是:如何将“我的函数”推广到许多列表

更一般地说:是否有一种方法可以将列表索引到函数的输入中,然后逐个调用它们来检查条件?

您可以使用该方法来检查列表中的所有元素是否符合条件:

(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)

@佩瑟拉尔你说得对,谢谢你抓住了那个!现在修好了,谢谢。它起作用了。我从未见过“check.lsts”作为输入。中间的那个点是什么?<代码>检查< /代码>和<代码> LSTS只是参数名。代码>检查< /代码>是一个函数,<>代码> LSTS是列表的列表,中间的点是声明可变数量的参数,看到这个。我来做。格雷西亚斯·德努埃沃!现在我的问题是:如何处理每一对?有没有一种方法可以将每个列表都调用到列表列表中?例如:(定义(我的函数lst)(生成列表(第二个lst)(第一个lst))lsts)是否有效?