Lva*_*oij -1 scheme intersection list duplicates racket
我有一段代码可以得到两个列表的交集.但是,我想删除列表中的所有重复项.我用的是这个功能remove-duplicates().每当我使用它时,drRacket会出现以下错误.
申请:不是程序; 期望一个程序可以应用于给定的参数:(abccd)参数......:[无]
这是我的代码
#lang scheme
(define (intersect lst1 lst2)
(removedup(lst1 lst2))
(cond
((null? lst1)(quote ()))
((isin? (car lst1) lst2)
(cons (car lst1)
(intersect (cdr lst1) lst2)))
(else (intersect (cdr lst1) lst2))))
(define (removedup lst1 lst2)
(remove-duplicates(lst1))
(remove-duplicates(lst2))
)
(define (isin? a lat)
(cond
((null? lat) #f)
(else (or (equal? (car lat) a)
(isin? a (cdr lat))))))
Run Code Online (Sandbox Code Playgroud)
我的意见是 > (intersect '(a b c c d) '(c d e f))
任何人都可以帮我解决我的问题吗?提前致谢
看起来你是从另一种语言来到Racket.在Racket和Scheme中,您无法添加额外的括号; 每对括号都有特定的含义.在这种情况下,你写了
(remove-duplicates(lst1))
Run Code Online (Sandbox Code Playgroud)
当你打算写的时候
(remove-duplicates lst1)
Run Code Online (Sandbox Code Playgroud)
其中第一个有两个函数调用:调用lst1,然后调用remove-duplicatelicates和result.第一个不能成功,因为lst1不是一个函数.
另外,看看DrRacket给你的粉红色突出显示; 它可能突出了问题领域.
另请注意,当您修复此错误时,您可能会在另一行中获得另一个非常相似的错误?