我在处理Racket博士中的错误时遇到了麻烦:一个重新组合2个列表的函数
(define (reunite L1 L2)
(foldr (λ(e init)
(if (member e init) init (cons e init)))
null
(append L1 L2)
))
错误是: init:非法(不明确)使用class关键字:init
λ是什么意思? 如果我消除它会引发同样的错误。你能帮助我吗?
答案 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))