方案括号

Scheme parentheses

谁能帮我找出以下在列表中查找最小值和最大值并将它们作为列表返回的方法中的错误?它应该在逻辑上工作。我想括号有问题。

(define (find-min-and-max my-list)
    (find-min-max-rec (car my-list) (car my-list) my-list)
)

(define (find-min-max-rec smallest largest ls)
    (if (null? ls)
        (list smallest largest)
    )
    (cond 
        ((and (< smallest (car ls)) (> largest (car ls)) ) (find-min-max-rec (car ls) (car ls) (cdr ls)))
        ((< smallest (car ls)) (find-min-max-rec (car ls) largest (cdr ls)))
        ((> largest (car ls)) (find-min-max-rec smallest (car ls) (cdr ls)))
        (else (find-min-max-rec smallest largest (cdr ls)))
    )
)

(display (find-min-and-max '(1 2 3 4)))

控制台输出

*** ERROR: pair required, but got ()
    While loading "./jdoodle.sc" at line 17
Stack Trace:
_______________________________________
  0  (car ls)
        at "./jdoodle.sc":10
  1  (find-min-and-max '(1 2 3 4))
        at "./jdoodle.sc":17
Command exited with non-zero status 70

预计

(1 4)

此外,有没有推荐使用的调试工具?

注意:我已经 运行 我的代码在这里:https://www.jdoodle.com/execute-scheme-online

是的,事实上你是对的。括号有问题。

这里有一个线索:这个计算结果是什么?

(define (f x)
  (if (< x 5) 10)
  12)

(f 3)

为什么?