我们如何将两个列表作为Scheme中函数的参数传递?

时间:2016-11-14 12:43:56

标签: scheme

我们如何在定义函数时传递两个列表作为参数?我的意思是两个列表是仲裁的,并且“真实列表”将在函数执行期间作为参数传递。

是否像

(define checklist
  (lambda (list1 list2)
    (or (null? list1) (null? list2)) 
    #and my other work here))

(define (checklist list1 list2)
  (or (null? list1) (null? list2))
  #and my other work here)

(define checklist
  (lambda list1 list2)
  (or (null? list1) (null? list2))
  #and my other work here)

?我很抱歉,如果它太基本了。我已经尝试了这些但是当我通过2个列表来运行该函数时,我得到了“错误的参数数量”错误。感谢你!

1 个答案:

答案 0 :(得分:0)

第三个产生一个rest参数list1并返回全局变量list2的值,如果它不存在则返回错误。但是给define 3个以上的表达式是不合法的,所以第三个不会被接受。

由于(define (checklist l1 l2) ...)只是写(define checklist (lambda (1 2) ...))的奇特方式,因此前两个例子完全相同。

请注意(or x y z)将评估为第一个真值,如果在变为死代码后有表达式。如果您希望在(or x y z)成真或不成真的情况下做某事,则需要使用像(if (or x y z) something-expression something-else-expression)这样的条件