Object “我为什么要吃?”;“对象不适用”;方案中的错误?

Object “我为什么要吃?”;“对象不适用”;方案中的错误?,object,scheme,Object,Scheme,我编写此代码是为了检查第一个列表是否出现在第二个列表中,即第二个列表包含第一个列表。我觉得一切都很好,但上面说object bla bla(显示了第一个列表)不适用 任何帮助都将不胜感激。应该很简单,但看不到它。您有几个括号问题,可能是因为您认为参数列表应该用括号括起来。 您应该只在函数名后按顺序写入参数 形式 (define subset? (lambda (st1 st2) (cond ((not (set? st1)) (error "Your fi

我编写此代码是为了检查第一个列表是否出现在第二个列表中,即第二个列表包含第一个列表。我觉得一切都很好,但上面说object bla bla(显示了第一个列表)不适用


任何帮助都将不胜感激。应该很简单,但看不到它。

您有几个括号问题,可能是因为您认为参数列表应该用括号括起来。
您应该只在函数名后按顺序写入参数

形式

(define subset? (lambda (st1 st2)
    (cond
        ((not (set? st1))
        (error "Your first argument is not a set!"))
        ((not (set? st2))
        (error "Your second argument is not a set!"))
        ((null? (st1)) #t)
        ((in? ((car st1) st2)) (subset? ((cdr st1) st2)))
        (else #f)
        )))
很容易导致这种错误,但形式相当

(define subset? (lambda (st1 st2) ...
看起来像是函数应用程序的外观

那么在

(define (subset? st1 st2) ...
您尝试将
(car st1)
应用到
st2
,并将结果传递到?中的
;在

(in? ((car st1) st2))
您尝试将
(cdr st1)
应用于
st2
,并将结果传递给
子集?
;而且

(subset? ((cdr st1) st2))
您正在尝试在没有任何参数的情况下调用
st1
,并将结果传递给
null?

正确的语法是

(null? (st1))
检查此部分:
(in.((汽车st1)st2))
(in? (car st1) st2)
(subset? (cdr st1) st2)
(null? st1)