Functional programming 方案括号

Functional programming 方案括号,functional-programming,scheme,mit-scheme,Functional Programming,Scheme,Mit Scheme,有谁能帮我找出下面在列表中查找最小值和最大值并将其作为列表返回的方法中的错误吗?它应该在逻辑上工作。我想括号有问题 (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 larges

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

(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)))
预期的

(1 4)
此外,您是否建议使用任何调试工具


注意:我一直在这里运行代码:

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

(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)))
这里有一个线索:这个评估是为了什么

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

(f 3)
(定义(f x)
(如果(

为什么?

我最初认为是10。但是返回12。。。思考明白了!if语句没有else。并且总是返回值12。我将再次查看我的代码。谢谢