我在处理 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
λ是什么意思?如果我消除它,它会抛出同样的错误。你能帮我吗?
我相信这就是您的目标:
(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))