Scheme 方案多个函数调用错误

Scheme 方案多个函数调用错误,scheme,Scheme,我正在做这项学校作业,在下面代码的最后一行我一直遇到这个问题。错误为列表参考:违反合同。所以,我希望我能得到帮助重写最后一行,这样我就可以使用递归,因为我不允许使用循环或开始作为赋值的一部分 (define (second lst) (cond [(and(list? lst)(not(null? lst)) (not(null? (cdr lst)))) (first (rest lst))] [else '()])) (define (extract-helper ls

我正在做这项学校作业,在下面代码的最后一行我一直遇到这个问题。错误为列表参考:违反合同。所以,我希望我能得到帮助重写最后一行,这样我就可以使用递归,因为我不允许使用循环或开始作为赋值的一部分

(define (second lst)
  (cond [(and(list? lst)(not(null? lst)) (not(null? (cdr lst)))) (first (rest lst))]
        [else '()]))

(define (extract-helper lst size counter)
  (cond [(equal? size counter) counter]
        [else (second (list-ref lst counter))(extract-helper (list-ref lst (+ counter 1)) size (+ counter 1))]))

至少,您需要包含触发错误的代码。除此之外,您还应该包括运行程序产生的精确文本,以及您认为它可能意味着什么。
(second…
但由于它不是最后一个表达式,因此结果将被丢弃,并且结果仅来自
(extract helper…
如果
size
是长度,则您可以清楚地看到您是
(列表参考lst(+计数器1))
,这样您可能会尝试获取一个元素,而这正是问题所在。但是我遇到的问题是提取助手处理列表列表,这就是为什么我在else部分有两件事。第二个函数只接受一个列表,而不是列表列表。我不知道如何做递归和调用同一行中的第二个函数。如果你解释一下这个函数应该完成什么,那会有很大帮助。