1

我在处理 Dr Racket 中的错误时遇到问题:重新组合 2 个列表的函数

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

错误是: init:非法(未加括号)使用类关键字 in:init

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

4

1 回答 1

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))
于 2013-07-29T18:36:02.567 回答