我正在尝试学习如何在方案中使用匹配。我有点理解它如何处理非常短的问题(即:定义长度只是两行),但不适用于有多个输入和辅助程序的问题。例如,这是定义联合的一种流行方式:
(define ele?
(lambda (ele ls)
(cond
[(null? ls) #f]
[(eq? ele (car ls)) #t]
[else (ele? ele (cdr ls))])))
(define union
(lambda (ls1 ls2)
(cond
[(null? ls2) ls1]
[(ele? (car ls2) ls1) (union ls1 (cdr ls2))]
[else (union (cons (car ls2) ls1) (cdr ls2))])))
您如何在两个程序中使用 match 来做到这一点?(或者你甚至需要两个程序?)