球拍Reunite 2名单

时间:2013-07-29 18:11:45

标签: function scheme racket

我在处理Racket博士中的错误时遇到了麻烦:一个重新组合2个列表的函数

(define (reunite L1 L2)
(foldr (λ(e init) 
(if (member e init) init (cons e init))) 
  null 
(append L1 L2)
))

错误是:       init:非法(不明确)使用class关键字:init

λ是什么意思? 如果我消除它会引发同样的错误。你能帮助我吗?

1 个答案:

答案 0 :(得分:1)

我相信这是你的目标:

(define (reunite L1 L2)
  (foldr (lambda (e init)
           (if (member e init)
               init
               (cons e init)))
         null
         (append L1 L2)))

λ字符是λ,为了避免编码问题,只需编写lambda就更安全了。作为旁注 - 所写的reunite过程实际上是两个列表之间的union操作,并且可以通过以下更简单的方式实现:

(define (reunite L1 L2)
  (foldr (lambda (e init)
           (if (member e init)
               init
               (cons e init)))
         L2
         L1))