我刚问了一个类似的问题并得到了我需要的答案,但他的时间我找不到任何可能导致此错误的额外括号:“错误:(4 6 5 87 7)不是函数”。是因为别的吗?我的代码需要一个数字,如果它已经在列表中,它就不会添加它。如果列表中尚未包含该号码,则会将其添加。
(define (insert x ls)
(insertHelper x ls '() 0)
)
(define (insertHelper x ls lsReturn counter)
(cond
(
(and (null? ls) (= counter 0))
(reverse (cons x lsReturn))
)
(
(and (null? ls) (>= counter 1))
(reverse lsReturn)
)
(
(eqv? x (car ls))
(insertHelper x (cdr ls) (cons (car ls) lsReturn) (+ counter 1))
)
(
else ((insertHelper x (cdr ls) (cons (car ls) lsReturn) (+ counter 0)))
)
)
)
(define theSet (list 4 6 5 87))
(display theSet)
(display "\n")
(display (insert 7 theSet))
答案 0 :(得分:2)
你患有一个括号过多的情况,撒上了不好的缩进。这可以治愈你的疾病:
(define (insert x ls)
(insertHelper x ls '() 0))
(define (insertHelper x ls lsReturn counter)
(cond ((and (null? ls) (= counter 0))
(reverse (cons x lsReturn)))
((and (null? ls) (>= counter 1))
(reverse lsReturn))
((eqv? x (car ls))
(insertHelper x (cdr ls) (cons (car ls) lsReturn) (+ counter 1)))
(else
(insertHelper x (cdr ls) (cons (car ls) lsReturn) (+ counter 0)))))
答案 1 :(得分:1)
else
后有太多括号。
对于它的价值,几乎所有" foo的实例都不是一个程序"我在Stack Overflow上看到的错误是由无关的括号引起的。